EAが複数のペアで実行されない、助けが必要 - ページ 3

 
for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
         {
           if(fastma < slowma)
           {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
             else
               Print("Error Closing order ", GetLastError());
              
           }
          
         }
      if(OrderType()==OP_SELL)
        {
          if(fastma > slowma)
          {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
            else
               Print("Error Closing Order : ", GetLastError());
              
          }
          
        }
      }
    Sleep(300000);
    return(0);
}
私のEaは注文の開始と終了を停止しません。私のコードの何かを無視しているようです。
 
Matt_Townsend: クローズオーダーの機能に 何か問題がありますか?

はい - 注文を閉じるときは、カウントダウンする必要があります。

for(int i=OrdersTotal()-1; i>=0; i--)
その理由はこちらで ご覧いただけます。
 
honest_knave:

はい - 注文を閉じるときは、カウントダウンする必要があります。

for(int i=OrdersTotal()-1; i>=0; i--)
その理由はこちらで ご覧いただけます。
それはまだちょうど開いて、ほとんどすぐに取引を閉じている、コードに何か他の問題がありますか?
 
Matt_Townsend 他に何か間違ったコードはありませんか?
変数をプリントアウトして、その原因を探ってください。
 
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;

なぜ続けるのか?

if(OrderMagicNumber()!= MagicNumber || OrderSymbol()!= Symbol()) continue;


はもっと意味がある
 
Keith Watford:
if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) continue;

なぜ続けるのですか?

if(OrderMagicNumber()!= MagicNumber || OrderSymbol()!= Symbol()) continue;


の方がより理にかなっています。
コードに || がある場合は注文を閉じませんが、!= がある場合はより効果的に動作します。
 
//+---------------------------------------------+
//|System start                                 |
//+---------------------------------------------+
int start()
{


    double fastma, slowma;
    int    ticket, total;
    //---define Ma's
    
    fastma = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);
    slowma = iMA(NULL,0,8,0,MODE_SMA,PRICE_CLOSE,0);
    
    total = OrdersTotal();
    //---Start operations
    
    if(total < 1)
    {
       if(fastma > slowma)
        {
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
         if(ticket > 0)
         {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("Buy order opened : ", OrderOpenPrice());
         }
         else
           Print("Error opening order : ", GetLastError());
           return(0);
       }
       if(fastma < slowma)
       {
         ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",0,0,Red);
         if(ticket > 0)
         {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
            Print("Sell order opened : ", OrderOpenPrice());
         }
         else
           Print("Error opening order : ", GetLastError());
           return(0);
       }
       return(0);
    }
  
      
    for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber && OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
         {
           if(fastma < slowma)
           {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
             else
               Print("Error Closing order ", GetLastError());
           }
          
         }
      if(OrderType()==OP_SELL)
        {
          if(fastma > slowma)
          {
             if(OrderClose(OrderTicket(),Lots,OrderClosePrice(),10,clrNONE))
               Print("Order Closed : ", OrderClosePrice());
            else
               Print("Error Closing Order : ", GetLastError());
          }
          
        }
      }
    Sleep(300000);
    return(0);
}
現在、私のコードは、私が設定したどのペアでも取引を開始することができますが、ランダムに特定のペアが未決済取引で表示されます。私は基本的に私がそれを置くどんなペアで独立して実行するようにコードを取得しようとしてきたが、残念ながらコードは他のすべての取引が終了するまで、任意のトレードを開くことはありませんし、それが設定されているすべてのペアで取引を開くことはありません。プログラムがそうするようにする方法はないでしょうか、それは私が望む方法で売買します。
 
ユーコード
  for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
簡略化
  for(int i=OrdersTotal()-1;i>=0;i--) if(
     OrderSelect(i,SELECT_BY_POS)
  && OrderMagicNumber() == MagicNumber
  && OrderSymbol()      == Symbol()
  ){
     //---Check Order Type
     if(OrderType()==OP_BUY)
 
whroeder1:
あなたのコード
  for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
         if(OrderMagicNumber()!=MagicNumber && OrderSymbol()!=Symbol()) continue;
         //---Check Order Type
         if(OrderType()==OP_BUY)
簡略化
  for(int i=OrdersTotal()-1;i>=0;i--) if(
     OrderSelect(i,SELECT_BY_POS)
  && OrderMagicNumber() == MagicNumber
  && OrderSymbol()      == Symbol()
  ){
     //---Check Order Type
     if(OrderType()==OP_BUY)

各チャートはまだ独立して動いていないのですが、他に何かできることはありますか?

そして、そのコード化された方法は、もはや取引を終了させません。

 
キース・ワトフォード 2016.12.14 03:10122.155.43.228ban EN

    total = OrdersTotal();
    //---Start operations
    
    if(total <= 1)
未決済注文をループし、EAのマジックナンバーとチャートシンボルを持つ取引のみをカウントする。