MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1596

 

私は親切に提供されたコードから私の最初のExpert Advisorを構築しました(動機とコードを提供してくれたMakarFX_に 感謝します)。

すべて正常に動作するのですが、ひとつだけ問題があります。どこを探せばいいのかわからない。

アルゴリズムは以下の通りです。

シグナル発生 - オーダー開始

ポイントでのストップオーダーやテイクオーダーを使用するか、デポ通貨CountLossとCountProfitで利益と損失の限界に達した後、それを閉じます。(どちらか早い方)

ストップならマージン付の次の注文、テイクならCountProfit、CountLoss- ロットは最初のものにリセットされます。

ストップロスがCountLossに設定されている場合、次の注文は開始ロットではなく、例えば最小ロットで開始されます。

外部変数で開始ロット0.02が設定されている場合、CountLossでの次の注文はロット0.01になります。

どなたか、エラーの場所を教えていただけませんか?

MakarFX
MakarFX
  • 2021.03.19
  • www.mql5.com
Профиль трейдера
ファイル:
oilim1p11.mq4  17 kb
 
законопослушный гражданин:

私は親切に提供されたコードから私の最初のExpert Advisorを構築しました(動機とコードを提供してくれたMakarFX_に 感謝します)。

すべて正常に動作するのですが、ひとつだけ問題があります。どこを探せばいいのかわからない。

アルゴリズムは以下の通りです。

シグナル発生 - オーダー開始

ポイントでのストップオーダーやテイクオーダーを使用するか、デポ通貨CountLossとCountProfitで利益と損失の限界に達した後、それを閉じます。(どちらか早い方)

ストップならマージン付の次の注文、テイクならCountProfit、CountLoss- ロットは最初のものにリセットされます。

ストップロスがCountLossに設定されている場合、次の注文は開始ロットではなく、例えば最小ロットで開始されます。

外部変数で開始ロット0.02が設定されている場合、CountLossでの次の注文はロット0.01になります。

どなたか、エラーの場所を教えていただけませんか?

関数 double Lots() で何を変更したかを見てみましょう。

ファイル:
oilim1p11.mq4  17 kb
 
MakarFX:

不採算取引出現時に一度だけ印刷される

感想ありがとうございます。今回の注文の締め切りと前回の注文の締め切りを比較したところ、すべて思い通りになりました。また、あまり役に立ちませんでしたが、逆方向の注文をストップロスで建てる機能も作りました。
 
Petronet:
ありがとうございます、イメージが湧きました。今回の注文の締め切りと前回の注文の締め切りを比較したところ、すべてその通りになっていました。また、あまり役には立ちませんでしたが、逆方向の注文をストップロスで開ける機能も作りました。

具体的には...

 

皆さん、こんにちは。atrインジケータを使用して、利益とストップの計算を実装しようとしています。停止は問題なく行えます。しかし、利益は常に同じ値に設定されています。以下は、利益計算のためのコードです。

  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  

  
  
  //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

利益が常に同じ値であることの誤差とは?え?

 
DanilaMactep:

皆さん、こんにちは。atrインジケータを使用して、利益とストップの計算を実装しようとしています。停止は問題なく行えます。しかし、利益は常に同じ値に設定されています。以下は、利益計算のためのコードです。

利益が常に同じ値であることの誤差とは?え?

   // ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
   if(Tip_tp == en_TP_po_atr)
     {
      tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
     }
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+
 
MakarFX:
ありがとうございました。コードの一部を変更したら、すべてうまくいきました。しかし、目視では先が見えないので、どのようなエラーだったのか言葉で説明していただけますか?
 
MakarFX:

double Lots()関数で変更した箇所をご覧ください。

スーパー!どうもありがとうございます。

 
DanilaMactep:
ありがとうございました。コードの一部を変更したところ、すべてがうまくいきました。しかし、目視では先が読めないので、何がエラーだったのか言葉で説明できますか?

あなたのコードは分割されました

В этой части кода ты задаешь tp значение АТР
  if(Tip_tp == en_TP_po_atr)// ЕСЛИ ПРОФИТ ПО АТР//-------------------------------------------------------------------------------------------------+
  {
  tp =NormalizeDouble(iATR(NULL,PeriodForWork_sl,atr_sl_period,1),Digits);// ПРИСВАЕВАЕМ ЗНАЧЕНИЙ АТР ДЛЯ ВЫСТАВЛЕНИЯ СТОПЛОССА
      if(tp<stoplevel)  // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
        {
         tp=NormalizeDouble(tp*1.5,Digits); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
        } 
  }
А в этой части ты обнуляешь предыдущее действие и задаешь непонятно что...
  tp= NormalizeDouble(tp*Point, Digits());// НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
 
こんにちは!私のターミナルを立ち上げるのを手伝ってください - マーケットが機能しません。マーケットから無料のインジケータをダウンロードしたいのですが、できません。

パスワードを変更したり、再起動したりしましたが、何も動きません。

このプログラムは、次のようなログを記録します。

2021.08.23 11:54:18.236 MQL5 Market 製品「MACD Intraday Trend」のダウンロードに失敗しました(www.mql5.com:443 送信失敗 [426: ])。


オルガさん、ありがとうございます。