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

 
FOTOGRAF14:

みなさん、こんにちは!自分のコンディションの書き方はどうすればいいのでしょうか?価格がストップロスの距離を超えた後にストップロス注文を出す必要があります。

for Buy...です。

if( )

{

------------

}

を売るために......。


STB を Breakeven に変換する関数に,オーダーチケットと 距離(pips)が渡されます。

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


...

 
Vitaly Muzichenko:

絵は出ません)

検索ロジック自体が重いので、どうすれば楽になるかは......まだわかりません。

Vitaly 私はもともと、テスターの速度を低下させるのは計算ではなく、ビジュアルテストの グラフィカルなオブジェクトであることを説明しようとしたのです。彼のアドバイスに従え

アレクセイ・コジツィン

描画せずにインジケータで転がすことができます)。そして、選択したほうがいいのです。ホップ-ドローイング、ホップ-ドローイングなし:)

をご覧いただき、速度の違いをご確認ください。

描画が遅れているわけでもなく、チャート上にグラフィックがあるだけの話です。

 
Alexey Viktorov:

描画が遅くなっているわけでもなく、チャート上にグラフィックがあるだけの話です。

論外...。だから、必要ないときはOFF(DRAW_NONE)にして終わりと......。で、すべて同じように値にアクセスすることができます。
 
Alexey Viktorov:

Vitaly 私はもともと、テスターの速度を低下させるのは計算ではなく、ビジュアルテストの グラフィカルなオブジェクトであることを説明しようとしたんです。彼の言うとおりにする

をご覧いただき、速度の違いをご確認ください。

描画が遅れているのではなく、チャート上にグラフィックがあるだけで遅れているのです。

このグラフは、コードを書いているときに計算の正しさを確認するために作ったもので、しばらく前に純粋に技術的な目的で作られたもので、もうずっと前にコードから取り除かれています。テスト中のチャートは空白です。

だから、機能がないときは、テストが「飛ぶように」進むのですが、機能をつなげると、ゆっくり進むんです。

追伸:グラフィカルなオブジェクトは基本的に必要ないですね。グラフィックのことは忘れてください。

 
Vitaly Muzichenko:

グラフは、コードを書いているときに計算が正しいかどうかを確認するためだけに作ったもので、純粋に技術的なもので、ずっと前にコードから削除されました。テスト中のチャートは空白です。

だから、機能がないときはテストが「飛ぶように」進むのですが、機能をつなぐと、ゆっくり進むんです。

追伸:グラフィカルなオブジェクトは基本的に必要ないですね。グラフィックのことは忘れてください。

ここを 見ましたか?
 
Artyom Trishkin:
ここを 見ましたか?

クール、EAに機能を引っ張ってくるようにします。結果は後ほど掲載します。

ありがとうございます!!!

 
4:00と15:00に開かれたバーのインデックスを取得するための正しいコードの書き方を教えてください。
 
missha689:
4:00と15:00に開かれたバーのインデックスを取得するための正しいコードの書き方を教えてください。

それは1つです。

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

それは2つです。

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

それは1つです。

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

それは2つです。

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
日付が指定されているので、特定の日に設定されるのはわかるのですが、昨日のバーインデックスが15で、今日のバーインデックスが4になるように設定するにはどうすればよいのでしょうか
 
昨日の日付と時刻をプログラム的に調べる方法を教えてください。
理由: