各通貨ペアのEA - どのようなコードは、通貨ペアごとに一度だけ開くには? - ページ 4

 
onewithzachy:
あなたは大間違いです。あなたのコードは決して実行されません!!!。RaptorUKのものを使ってください。

なるほど :)

私は単にこれで混乱しました。

"finish when j = 0"

ありがとうございます

 
grey.unit:

だから、こんな感じになるはずです。

というのは、あなたがこれを書いたからです。

それとも、私が間違っているのでしょうか?

あなたは間違っています ... これを見てください:for

私のコードでは、式2は、j >= 0 つまり ... while ( j >=0 ) なので、jが0以上の間、 つまり OrdersTotal() - 1から 0を 含むまでループが実行されることになります。

j = 0 (j == 0 と書く必要があるかもしれません) とすると、while (j == 0) という意味になり、j が0 のときだけループが実行されることになります。

 
ああ、なるほど、そういうことだったのか。
 
RaptorUK:

いいえ、こうしてください ... ...

最初の注文の位置は0なので、5つの 注文がある場合、位置は0、1、2、3、4 ... 最後はOrdersTotal() - 1 ... なので、カウントダウンするにはOrdersTotal() - 1から始めて0を終了することになります。

これは、OrdersTotal() -1 が No Orders で、0 が 1st order、1 が 2 orders、そして 4 までが 5 orders という意味でしょうか?

どなたか、-1がNo ordersに等しいという私の理解が正しいかどうか教えていただけませんか?

ありがとうございます。

 
barnacle7:

これは、OrdersTotal() -1 が No Orders で、0 が 1st オーダー、1 が 2 オーダー、そして 4 までが 5 オーダーに相当するという意味でしょうか?

OrdersTotal() は未決済注文の数です。 はい、合計で5つあれば、0から4までの数字が付きます。
 

私も同じ問題に関して助けが必要です。私は初心者のコーダーで、ここで見たコードを入力しようとしたのですが、全く動作しませんので、助けてください。Orderselectが使用されました

OrdersTotalを置き換え、各EAが行う取引の数を制御するために使用されましたが、今では他のEAが取引を配置しません。

void OnTick()

{
       double movingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageSS = iMA(NULL,60,LowerMAS,0,MODE_SMA,PRICE_CLOSE,1);     
       double movingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,0);       
       double lastmovingAverageSB = iMA(NULL,60,LowerMAB,0,MODE_SMA,PRICE_CLOSE,1);          
       double movingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFS = iMA(NULL,60,UpperMAS,0,MODE_SMA,PRICE_CLOSE,1);   
       double movingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,0);    
       double lastmovingAverageFB = iMA(NULL,60,UpperMAB,0,MODE_SMA,PRICE_CLOSE,1);    
       int b;int bM;int s;int sM;    
       bool res = (OrderSelect(b,SELECT_BY_POS));    
       bool resM = (OrderSelect(bM,SELECT_BY_POS));    
       bool ses = (OrderSelect(s,SELECT_BY_POS));    
       bool sesM = (OrderSelect(sM,SELECT_BY_POS));    
       
       if((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB) && res == false  && resM == false )      
         {
         b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
         bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
         }       
         else if((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS) && ses == false && sesM == false)     
         {  
         s = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS1*_Point,NULL,3,0,Red);       
        sM = OrderSend (Symbol(),OP_SELL,lotSize,Bid,4,Ask + SLPS*_Point,Ask - TPS2*_Point,NULL,4,0,Red);   
}


 
&& res == false

Orderselect は、注文を選択した場合に true を返します。

シンボル名と組み合わせてマジックナンバーを使用することもできます。

https://www.mql5.com/en/articles/1359 に例があります。

MagicNumber: "Magic" Identifier of the Order
MagicNumber: "Magic" Identifier of the Order
  • www.mql5.com
In МТ3, management of open positions was rather time-taking. Traders had at their disposal a rather limited tool set to work with the list of open and closed positions. The problem of distinguishing between "own" and "someone else's" positions was solved in rather complicated ways. In МТ4, the situation has cardinally changed. Now, trader can...
 
  1.        int b;int bM;int s;int sM;    
           bool res = (OrderSelect(b,SELECT_BY_POS));    
           bool resM = (OrderSelect(bM,SELECT_BY_POS));    
           bool ses = (OrderSelect(s,SELECT_BY_POS));    
           bool sesM = (OrderSelect(sM,SELECT_BY_POS));    

    b が値なしで、オーダーセレクトは失敗します。s が値なしで、オーダーセレクトは失敗します。

  2. 複数のオーダーを選択するポイントは何ですか?結果は、最後に成功した選択です。

  3.          b = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB1*_Point,NULL,1,0,Green);       
             bM = OrderSend (Symbol(),OP_BUY,lotSize,Ask,4,Ask - SLPB*_Point, Ask + TPB2*_Point,NULL,2,0,Green);       
    
    bとbMはローカル変数です。チケットの番号は、戻るときに失われます。

  4. なぜ位置で選択しようとしているのに、チケット番号を保存しようとするのですか?有効なチケット番号で選択しても、その注文がオープンであることを意味するわけではありません。

  5. あなたはAskで 買い、Bidで 売ります。

    1. 買い注文のTP/SL(または売り注文のストップ/リミット)は、Bid/OrderClosePriceが それに達したときにトリガーされます。Ask±nを 使用すると、スプレッド分だけSLが短くなり、TPが長くなります。指定した金額をどちらかに使いたいとは思いませんか?

    2. 売り注文のTP/SL(または買い注文のストップ/リミット)はAsk/OrderClosePriceに 達したときにトリガーされます。
      MODE_SPREAD (Paul) - MQL4 programming forum - Page 3 #25

    3. チャートはBid 価格のみを表示しています。アスク ラインをオンにすると、スプレッドの大きさを確認できます(ツール → オプション(control+O) →チャート → アスクラインを表示)。
      スプレッドが変動するブローカーの多くは、終業時間(日本時間午後5時)±30分にはかなり広がります。私のGBPJPY(OANDA)では平均スプレッド=26ポイントですが、平均最大スプレッド=134ポイントです。