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

 
whroeder1 2016.12.14 03:3574.162.37.113禁止 EN
Keith Watford: オープンオーダーをループして、EAのマジックナンバーとチャートシンボルを持つトレードだけをカウントする。
その通りで、最後の投稿は そうではありません。
 
他のトピックは、このトピックと同じ内容でしたので、削除しました。削除する前にWHRoederさんのコメントをコピーしてここに貼り付けました
 
Keith Watford:
他のトピックは、このトピックと同じ内容でしたので、削除しました。WHRoederのコメントをコピーして、ここに貼り付けてから削除しました。
ループはcloseorderの時と同じようなフレームにすればいいのでしょうか、またその場合、プログラムは注文をカウントアップまたはダウンさせればいいのでしょうか?
 

   int buy_count=0;
   int sell_count=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            buy_count++;
           }
         if(OrderType()==OP_SELL)
           {
            sell_count++;
           }
        }
     }

というようなもの。

私は特別な理由がない限り、いつもカウントダウンしています。

 
  1. これで、MNとシンボルでフィルタリングするOrderSelect ループができました。
  2. さて、どのMNで取引を開始する でしょ うか?
 
Matt_Townsend:
ループはcloseorderと同じようなもので、注文をカウントアップ、ダウンさせるべきでしょうか?
注文のクローズ機能とオーダーエンド 機能の両方にループ機能を持たせていますが、まだ独立した取引はできていません。ストラテジーテスターで見る限り、設定したパラメータで取引を開始し終了していますが、ライブデモの複数のチャートでは動作しません。
 
Matt_Townsend:
ということで、現在オーダークローズ関数とオーダーエンド関数の 両方にループ関数をつけているのですが、まだ単独で取引してくれません。ライブデモでは複数のチャートで動作しませんが、ストラテジーテスターで見る限り、設定したパラメータで取引開始、終了しているのは変わりません。

EAごとにマジックナンバーが違うのでしょうか?

今使っているループを表示してください。

 
Keith Watford:

EAごとにマジックナンバーが違うのでしょうか?

今使っているループを表示してください。

for(int i=OrdersTotal();i<=0;i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
    //--- Check for buy order
       if(fastma > slowma)
        {
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
            Print("Buy order opened :", OrderOpenPrice());
         else
            Print("Order failed to open : ", GetLastError());      
         return(0);
        }
     //--- Check for sell order          
       if(fastma < slowma)
        {
         if(OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",MagicNumber,0,Red))
            Print("Order opened : ", OrderOpenPrice());                
         else
            Print("Order failed to open : ", GetLastError());
         return(0);        
        }
        break;
      }

オーダーエンドループはこちら

MNを外部intとして持っているので、EAを置くチャートごとに変えることができるのと同様に。
 
まず、あなたは
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
これは正しいです。
しかし、あなたは持っています
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
どちらが正しいのでしょうか?そして、あなたは私の質問を無視しました。


その後、あなたは静かに 送信を変更し
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
これは今、正しいです。
しかし、あなたは静かに 選択ループを壊した。
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
どっちが違うんだ。

複数の注文がある場合(1つのEA複数のチャート、複数のEA、手動取引)には
 
whroeder1:
まず、あなたは
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
であり、これは正しい。
しかし、あなたは
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
であり、そうではありませんでした。

次にあなたは静かに 送信を変更します
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
どちらが正しいか
そして、セレクトループを解除します。
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
どっちが違うんだ
では、ループの中にContinueやBreakを一切入れない方がいいのでしょうか?