Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

Metatrader Strategy Can anyone recode this for NT7

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Metatrader Strategy Can anyone recode this for NT7

    Hi All,

    Can anyone recode this for NT7, and report dor the comunity to download?

    Cheers.


    extern double Lots = 0.1;
    extern double MaximumRisk = 0.02;
    extern double DecreaseFactor = 3;
    extern double MovingPeriod = 12;
    extern double MovingShift = 6;
    //+------------------------------------------------------------------+
    //| Calculate open positions |
    //+------------------------------------------------------------------+
    int CalculateCurrentOrders(string symbol)
    {
    int buys=0,sells=0;
    //----
    for(int i=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
    {
    if(OrderType()==OP_BUY) buys++;
    if(OrderType()==OP_SELL) sells++;
    }
    }
    //---- return orders volume
    if(buys>0) return(buys);
    else return(-sells);
    }
    //+------------------------------------------------------------------+
    //| Calculate optimal lot size |
    //+------------------------------------------------------------------+
    double LotsOptimized()
    {
    double lot=Lots;
    int orders=HistoryTotal(); // history orders total
    int losses=0; // number of losses orders without a break
    //---- select lot size
    lot=NormalizeDouble(AccountFreeMargin()*MaximumRis k/1000.0,1);
    //---- calcuulate number of losses orders without a break
    if(DecreaseFactor>0)
    {
    for(int i=orders-1;i>=0;i--)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==fals e) { Print("Error in history!"); break; }
    if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
    //----
    if(OrderProfit()>0) break;
    if(OrderProfit()<0) losses++;
    }
    if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
    }
    //---- return lot size
    if(lot<0.1) lot=0.1;
    return(lot);
    }
    //+------------------------------------------------------------------+
    //| Check for open order conditions |
    //+------------------------------------------------------------------+
    void CheckForOpen()
    {
    double ma;
    int res;
    //---- go trading only for first tiks of new bar
    if(Volume[0]>1) return;
    //---- get Moving Average
    ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PR ICE_CLOSE,0);
    //---- sell conditions
    if(Open[1]>ma && Close[1]<ma)
    {
    res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid ,3,0,0,"",MAGICMA,0,Red);
    return;
    }
    //---- buy conditions
    if(Open[1]<ma && Close[1]>ma)
    {
    res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask, 3,0,0,"",MAGICMA,0,Blue);
    return;
    }
    //----
    }
    //+------------------------------------------------------------------+
    //| Check for close order conditions |
    //+------------------------------------------------------------------+
    void CheckForClose()
    {
    double ma;
    //---- go trading only for first tiks of new bar
    if(Volume[0]>1) return;
    //---- get Moving Average
    ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PR ICE_CLOSE,0);
    //----
    for(int i=0;i<OrdersTotal();i++)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;
    if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
    //---- check order type
    if(OrderType()==OP_BUY)
    {
    if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
    break;
    }
    if(OrderType()==OP_SELL)
    {
    if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
    break;
    }
    }
    //----
    }
    //+------------------------------------------------------------------+
    //| Start function |
    //+------------------------------------------------------------------+
    void start()
    {
    //---- check for history and trading
    if(Bars<100 || IsTradeAllowed()==false) return;
    //---- calculate open orders by current symbol
    if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
    else CheckForClose();
    //----
    }
    //+------------------------------------------------------------------+

    #2
    maccallum, if no one wants to translate this for you, you could contact one of our 3rd party NinjaScript consults for assistance - http://www.ninjatrader.com/partners#...pt-Consultants.
    AustinNinjaTrader Customer Service

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by Geovanny Suaza, 02-11-2026, 06:32 PM
    0 responses
    666 views
    0 likes
    Last Post Geovanny Suaza  
    Started by Geovanny Suaza, 02-11-2026, 05:51 PM
    0 responses
    377 views
    1 like
    Last Post Geovanny Suaza  
    Started by Mindset, 02-09-2026, 11:44 AM
    0 responses
    110 views
    0 likes
    Last Post Mindset
    by Mindset
     
    Started by Geovanny Suaza, 02-02-2026, 12:30 PM
    0 responses
    575 views
    1 like
    Last Post Geovanny Suaza  
    Started by RFrosty, 01-28-2026, 06:49 PM
    0 responses
    580 views
    1 like
    Last Post RFrosty
    by RFrosty
     
    Working...
    X