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

 
законопослушный гражданин:

しゃい

しかし、この関数では: doubleGetProfitFromStart()

yellowは関数の名前だけですよね?

原理的には何でもいいんですか?

そう、わかりやすくするためにそう呼んだのだGet Profit FromStart
 
MakarFX:
そう、わかりやすくするためにこのような名前にしたのです。

ありがとうございます。

エキスパートティック機能において

void OnTick() - if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE)) というコード行は、EAを最初に起動したときの最初の注文トリガーだけではないことが判明した。

のみならず、条件に従ってオーダーがクローズされた後の各ランも。

if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
     {
      if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger(0,"lab_Button",OBJPROP_STATE,false);
        }
      else
        {
         CloseOrder();
}
}

ということなのでしょうか?

 
MakarFX:

すべての負け注文の損失額

ご免なさい、また誤解しちゃった

または各負け注文の損失額

または、すべての負け注文の累積損失...


1枚だけ印刷する場合は、スクリプトで行うのがよいでしょう

そんなことしなくても、こうすればいいんです

あなたのコードが役に立ちました。同じメッセージが100回表示されるのではなく、4-10回だけ表示されるようになりました。おそらく、else演算子を追加する必要があります。
 
Petronet:
あなたのコードが役に立ちました。同じメッセージが100回表示されるのではなく、4-10回だけ表示されるようになりました。おそらく、else演算子を追加する必要があるのでしょう。
コードはどこにどのように書かれているのですか?
 
законопослушный гражданин:

ありがとうございます。

エキスパートティック機能において

void OnTick() - if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE)) というコード行は、EAを最初に起動したときの最初の注文トリガーだけではないことが判明した。

のみならず、条件に従ってオーダーがクローズされた後の各ランも。

ということなのでしょうか?

以上がEAの実行条件ですが、もし( if) (CountOrders()==0(注文なし)&&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))( そしてボタンが押された) なら、取引できることになります。

 
MakarFX:
コードはどこにどのように書かれているのですか?
EAのint start()関数の本体に コードを挿入しています。else演算子を追加して、空の変数をねじ込むと、データの重複はなくなりましたが、マイナスが2回連続すると、10回と2-3回でデータの重複が発生します。100回同じ情報を出す、私のオリジナルのループをコメントアウトしました。あなたの働くもの。
int start()
  {
  
  //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
  //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                //Print("Закрылись с минусом:", OrderProfit());
                //break; //прекращаем поиск
         //}
         
     //}
     //break;
  //}
  
  for(int pos=0; pos<OrdersHistoryTotal(); pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderCloseTime()>=TimeStart)
              {
               if(OrderProfit()<0) {cnt=OrderProfit();
               Print("ордера с минусом", cnt); TimeStart=TimeCurrent(); cnt=0;}
               else gg=gg+1;
              }
           }
        }
     }
 
Petronet:
EAのint start()関数のボディに コードを挿入しています。else演算子を追加して、空の変数をねじ込むと、データの重複はなくなりましたが、2回連続で損切りすると、データの重複が10回と2~3回発生します。100回同じ情報を出す、私のオリジナルのループをコメントアウトしました。あなたの働くもの。
// это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[0];

損切りの際に一度だけ印刷されます

 
金曜日の午後8時30分にポジションをクローズ する関数を挿入しました。

しかし、アドバイザーはそれが金曜日であることに気づかず、毎日ポジションをクローズしている

次のようになります。

input bool     UseTimeLimitClose           = true;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1, 
     Tuesday = 2, 
     Wednesday = 3, 
     Thursday = 4, 
     Friday = 5
   };
input  daysOfWeek closday          =    5;            // -- Handel bis Tag --
input int    Close_Hour            =   20;            // -- Handel bis Uhrzeit Std.--
input int    Close_min             =   30;



void OnTick() 

 if(UseTimeLimitClose)
     {
      MqlDateTime TimeNow;
      TimeToStruct(TimeCurrent(),TimeNow);
      if  ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519:
金曜日の午後8時30分にポジションをクローズ する関数を挿入しました。

しかし、アドバイザーはそれが金曜日であることに気づかず、毎日ポジションをクローズしている

斯くや

void OnTick() 

 if(UseTimeLimitClose)
     {
      if  (TimeDayOfWeek(TimeCurrent())==closday  && TimeHour(TimeCurrent())>= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

これを外部変数に出力する方法を教えてください。

double levelss[7] = {0,0.236,0.382,0.5,0.618,1,1.618}; // Уровни Fibo