[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 751

 
ToLik_SRGV:

バグは明らかです。履歴の負け注文がどこにも行かないので、毎ティックでポジションを開き、それを見つけて制御変数の値を同じ値で埋め、取引の開始のブロックがトリガーされます。


どうすれば二度と探さないようになるか、いや、すでに解決したものを探さないようになるか

 
FoxUA:

もう探さないというか、すでに作業したものを探さないようにするには、どうしたらいいでしょうか。

このブロックを取り出します。

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
 OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
            
            
         }
      }

そして、これに置き換えてください。

   for(int cnt=OrdersHistoryTotal();cnt>0;cnt--){
      static int num_ticket;
      if(!OrderSelect(cnt-1, SELECT_BY_POS, MODE_HISTORY))break;
      if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()){      
      if(num_ticket != OrderTicket())num_ticket = OrderTicket(); else break;
         if(OrderType() == OP_BUY){
            b=1;
            if(OrderClosePrice()==OrderTakeProfit())bt=1;
            if(OrderClosePrice()==OrderStopLoss())bs=1;
            bl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
         if(OrderType() == OP_SELL){
            s=1;
            if(OrderClosePrice()==OrderTakeProfit())st=1; 
            if(OrderClosePrice()==OrderStopLoss())ss=1;
            sl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
      }
   }

特に、最後に負けた取引のチケット番号をそれぞれ記憶し、それをチェックし、同じシグナルによるオープンを許さない点が異なる。

 
ToLik_SRGV:

この本体は捨ててください。


テストありがとうございました。 うまくいっているようです。

 
Abzasc:

そんなところでしょうか。

SZY コード挿入ボタン「SRC」の使い勝手が悪い、見づらい。


ありがとうございます!UseHourTrade2はbooleではなくintと書きました ))
 

こんにちは、友人たち。

この件に関して相談したいことがあります。

現在、第二通貨ペアで形成された読み(ZigZag)を第一通貨ペアのウィンドウに転送するインジケータを開発中です。

しかし、問題が発生しました。

例えば、引用に大きな "ギャップ "がある場合:1つのペアは1.4237として引用され、他の0.8345として、これらの指標は、視覚的に非常に便利ではありません、画面全体に "散乱 "と表示されます...

最初のペアの相場を考慮して、2番目のペアの指標「座標」の変換をどのように行うか(価格を「相対的」にする方法)?

アドバイス、推薦の言葉、本当にありがとうございました。

 
Morzh09:

こんにちは、友人たち。

この件に関して相談したいことがある。

現在、第二通貨ペアで形成された読み(ZigZag)を第一通貨ペアのウィンドウに転送するインジケータを開発中です。

しかし、問題が発生しました。

例えば、引用に大きな "ギャップ "がある場合:1つのペアは1.4237として引用され、他の0.8345として、これらの指標は、視覚的に非常に便利ではありません、画面全体に "散乱 "と表示されます...

最初のペアの相場を考慮して、2番目のペアの指標「座標」の変換をどのように行うか(価格を「相対的」にする方法)?

アドバイス、推薦の言葉、本当にありがとうございました。

リンク先をご覧ください。そこでは、スケーリングそのものがオリジナルな方法で行われているのです。

https://www.mql5.com/ru/code/7933

 

こんにちは。

これを簡略化する方法を教えてください。

if (バランス > 600)

{

Lot_mod = 0.1。

}

if (残高 > 700)

{

Lot_mod = 0.11。

}

if (バランス > 800)

{

Lot_mod = 0.12。

}

if (残高 > 900)

{

Lot_mod = 0.13。

}

などなど...。この形ではのびのびしすぎているからです。

ありがとうございました。

 
Lim1:

こんにちは。

どうすれば簡略化できるのか、教えてください。

などなど...。こうしてみると、ちょっと広がりすぎですね。

ありがとうございました。





y=a*x+bの形の方程式が役立ちます。
 
Lim1:

こんにちは。

これを簡略化する方法を教えていただけませんか?





は、ロットの計算式を決めてそれで終わり、そうでない場合は
 

Lim1、こんな感じでやってみてください。

int BalanceExcessIn100s = MathFloor( ( Balance - 600 ) / 100.01 );
Lot_mod = BalanceExcessIn100s * 0.01 + 0.1;