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

 
Alexey Viktorov:

MT5についての質問のようです。答えは、「プログラム上ではない」です。質問を終了することができます。

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

 

皆さんこんにちは!約束通り、チュートリアルのために戻ってきましたЈ(◔‿◔)もちろんgrail machineも動きましたが、テストに時間がかかるので、新しいバーが到着したときだけtickでコードを実行する方法を探しています。以下のオプションを発見。グローバルレベルでは、変数が定義されている

int intBars;// ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

そして、新しいバーが発生したかどうかをチェックする関数を書きました - これは傑作 です


bool f_IsNewBar()
{
   if(intBars != Bars) 
   {
      intBars = Bars;
      return(true);
   } 
return(false);
}

このバリアントを見つけたとき、オンティックからすべてのロジックを持つ関数を作成する必要があると言われています。関数でこのやり方は正直言って好きではないので、新しいバーがあるかどうかだけチェックして、それが真ならオンティックでコードを実行することにしています。単純化すると、つまり実際に作業していない状態では、次のようになります。

void OnTick()
{//НАЧАЛО ОН ТИК
   // если появился новый бар:
   if(f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    {// ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
}// КОНЕЦ ОН ТИК

違う質問をさせてください。グレイルはもちろん、実際のケースでも使えます。では、テスターでテストせず、リアルティックで 実行するバージョンのgrailでは、このチェックを外して、すべてのティックで EAが動作するようにするべきか、それとも、リアルティックでもこのチェックを残しておくべきか。このチェックをリアル口座版にも入れる場合、1回目に注文を開けなかった場合の2回目の注文はどのように計画すればいいのでしょうか?

 
DanilaMactep:

皆さんこんにちは!約束通り、チュートリアルのために戻ってきましたЈ(◔‿◔)もちろんgrail machineも動きましたが、テストに時間がかかるので、新しいバーが到着したときだけtickでコードを実行する方法を探しています。以下のオプションを発見。グローバルレベルでは、変数が定義されている

そして、新しいバーが発生したかどうかをチェックする関数を書きました - これは傑作 です


このバリアントを見つけたとき、オンティックからすべてのロジックを持つ関数を作成する必要があると言われています。関数でこのやり方は正直言って好きではないので、新しいバーがあるかどうかだけチェックして、それが真ならオンティックでコードを実行することにしています。簡略化すると、つまり実際に作業していない状態では、次のようになります。

違う質問をさせてください。グレイルはもちろん、実際のケースでも使えます。では、テスターではテストせず、リアル口座で動作させるバージョンのgrailでは、このチェックを外してEAを全ティックで 動作させるべきか、リアル口座でも残すべきか、どちらでしょうか?このチェックをリアル口座版にも入れる場合、1回目に注文を開けなかった場合の2回目の注文はどのように計画すればいいのでしょうか?

OPT、HI、LO、CLOSESのバー値で計算を行う場合、毎ティックで行う必要はない。しかし、すべてのティックで価格を監視するのは正しいことです。これは、別途計算や条件確認が必要です。

また、新バーはゼロバーの開店時間に追従しています。

FlagNewBar=false;   // глобальная или статик булева переменная
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }
 
Artyom Trishkin:

このスレッドでは、新しいMQL4でプログラミングを理解し、学び、MQL5に簡単に切り替えたいと考えている人たちの手助けを始めたいと思います - 言語は非常に似ています。

このブログでは、タスクやその解決方法、MTプログラミングに関する疑問などを議論していきます。

当フォーラムの他の経験豊富なメンバーにも議論に加わってもらい、誰もが興味を持つようなブランチになればと思います。

MQL4タスク:文字列中の大文字の位置番号を決定します。ありがとうございます。

 
Mikhail Nazarenko:

MQL4 タスク:文字列中の大文字の位置番号を決定する。ありがとうございます。

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   pos=StringFind(uppercase,StringSubstr(str,i,1));
   if(pos>=0) break;
   }
printf(pos);
 
Aleksei Stepanenko:

ありがとうございます。

 
Mikhail Nazarenko:

ありがとうございます。

違う。欲しいのはStringFindの 結果ではなく、iの方だ。

そうですね。

string str="preved mEdved";
string uppercase="ABCDEF.....ZАБВГД....Я";

int finish=StringLen(str)-1;
int pos=-1;
for(int i=0; i<=finish; i++)
   {
   if(StringFind(uppercase,StringSubstr(str,i,1))>=0)
      {
      pos=i;
      break;
      }
   }
printf(pos);
 
Mikhail Nazarenko:

MQL4 タスク:文字列中の大文字の位置番号を決定する。ありがとうございます。

StringGetCharacter() が使えます。"A "という文字は65で、"a "はあと32で-97です。登場人物もみんなそうです。したがって、文字コードが > 90 かつ <= 122 である場合、それは小文字のラテン文字です。キリル文字も32の違いがあります

 
Alexey Viktorov:

することができます。

まさに、良いオプションです。

 
こんにちは、ここでリーダーアカウントを作るにはどうしたらいいですか?