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

 
Alexey Viktorov:

アルチョム、私の答えは、この言葉から始まったのではない


パラボリックには厳格な交互性があり、異なるバーであっても一方向に2つのシグナルが出ることはあり得ません。しかも、そのために何か工夫をする必要はまったくなく、MAのようにゼロバーでもガタつかないんです。

ガタつき......以前から何度も気づいていたのですが。あれから何かが変わったのかもしれませんが、ゼロバーの点が消えることがあるんですねー。

私は、後で別の指標に変更することができるという状況からいつものように進めている - とコードのこのブロックは、すでに独立して動作します - 習慣...

 
Artyom Trishkin:
役に立ちますか?そこにテンプレートを掲載しましたので、それを元に自分で好きなものを作ってください。

ありがとうございます、大まかに適用してみましたが、やはり取引開始時にすぐにSLが変わってしまうことがあるような気がします。
 
AlGuru:

ありがとうございます!おおよそで応用してみましたが、やはり取引開始時にすぐにSLを変更することがあるような気がします。
そうすれば、SLの値を解きほぐし、トロールの内部にもPrint() を入れて、その作業と到達した値について報告する必要があります - さもなければ、感覚は単なる感覚に過ぎません ;)
 
皆さん、質問があります。マジックナンバーの桁数に制限はありますか?何桁にすればいいのでしょうか?
 
Rustam Bikbulatov:
ここで、皆さんに質問です!マジックナンバーの桁数に制限はあるのでしょうか?何桁にすればいいのでしょうか?


マジックは通常、整数int型で定義される。

イント

int型のサイズは4バイト(32ビット)である。最小値は-2,147,483,648、最大値は 2,147,483,647 です。

こんな感じ。

 
Alekseu Fedotov:


Magikは通常、整数int型で定義されます。

イント

int型のサイズは4バイト(32ビット)である。最小値は-2,147,483,648、最大値は 2,147,483,647 です。

こんな感じ。


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

こんにちは、私はEAを書きましたが、コードがわかりません。この関数は、サーバーの毎ティック毎秒に実行される必要があります。OnTickとOnTimerで 2回関数を呼び出したところ、すべて正しく動作したように見えますが、それでも1秒遅れることがよくあり、そのために正しいタイミングで動作しないことがあります。ヘルプ、誰が知っている、非常に感謝しています)。おそらく、サーバーとの接続が途切れたために、動作しなくなったのでは?通信が途切れても、サーバーの時刻と厳密に同期して、秒単位で実行させることは可能でしょうか?


int OnInit()

  {

   EventSetTimer(1);

   return(INIT_SUCCEEDED);

  }

void OnTick()

{

Clicker (); //-- старт каждый тик

}

void OnTimer()

{

Clicker (); //-- старт каждую секунду

}

void Clicker()

  {

//--- тут идёт порядка 30 строк кода, вырезал чтобы никого не грузить

   Comment("Sek = " + (Seconds()));

   return;                                      // Выход из start()  

  }

 
友人たちよ、初心者の MQL4プログラマーを助けて ください、アドバイスをお願いします。
最後の n 本のバーのベースの最大始値を決定するコードを書きましたが、何らかの理由で EA はチャート上のすべてのバーの最大始値を考慮します。

void OnTick()
{
   for (int i = 1; i <= BarTotal; i++)
   {
      double High_Open = iOpen(Symbol(), PERIOD_H1, i); 
      if (High_Open >= Current_High)
      {
         Current_High = High_Open;
         Print (Current_High); 
      }
   }
}

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

 
ivan-baaton:
友人たちよ、初心者の MQL4プログラマーを助けて ください、アドバイスをお願いします。
過去 n 本のバーの最大始値を決定するコードを書きましたが、EA はなぜかチャート上のすべてのバーの最大始値を考慮します。

...

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

このような機能を試してみてください。

//+------------------------------------------------------------------+
double GetMaxOpen(const string symbol_name,const ENUM_TIMEFRAMES timeframe,uint start_pos,const uint count){
   double array[];
   ResetLastError();
   if(CopyOpen(symbol_name,timeframe,start_pos,count,array)==count) return(array[ArrayMaximum(array)]);
   Print(__FUNCTION__," > Ошибка копирования в массив: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+

私は見ていない、実質的に自分で書いたものなので、見落としがあるかもしれません。

 

自分のエラーは理解できたが、それを解決する方法がわからない。タスクは正常に1秒ごとに開始されますが、現在のロウソクの開始からの時間が正しくカウントされません。

Seconds()関数は、最後に判明したティックのデータから秒数を出力 しますが、この関数を呼び出した 瞬間に分足ローソクのオープンからの実秒数を、たとえ最後の数秒間全くティックがなかったとしても、何とかしてカウントする必要があります。

タイムセコンド(TimeLocal())や ( TimeLocal() - Time[0]) でも動作しません ローカルタイムがサーバーと数秒異なることがあるからです。問題を解決するには?