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 charlesugo_1, 05-26-2026, 05:03 PM
    0 responses
    59 views
    0 likes
    Last Post charlesugo_1  
    Started by DannyP96, 05-18-2026, 02:38 PM
    1 response
    143 views
    0 likes
    Last Post NinjaTrader_ChelseaB  
    Started by CarlTrading, 05-11-2026, 05:56 AM
    0 responses
    161 views
    0 likes
    Last Post CarlTrading  
    Started by CarlTrading, 05-10-2026, 08:12 PM
    0 responses
    97 views
    0 likes
    Last Post CarlTrading  
    Started by Hwop38, 05-04-2026, 07:02 PM
    0 responses
    283 views
    0 likes
    Last Post Hwop38
    by Hwop38
     
    Working...
    X