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

 
Valeriy Yastremskiy:

ロジックはいい加減で、チケットの配列も注文の種類も 全て揃っています。ただ、注文が開始されたときに満たされず、TicketLimit関数内で配列が何らかの理由でゼロになります。一見すると、そう見える。

チェスとはどう違うのですか?一手足りないのです。解析してみる。ヴァレリーさん、ありがとうございます。

 

バーのステータスを正しく表示するには?

そうすると、正しくカウントされるのですが、データを使おうとすると "0 "と表示されます。

//---
   int i,limit;
   datetime Start=0;
   if((rates_total-prev_calculated-1)<=0)return(0);
   limit=rates_total-prev_calculated-1;
   for(i=limit; i>=0; i--) 
     {
      Label1Buffer[i]=open[i];
      Label2Buffer[i]=close[i];
      if(Start!=time[i])
        {
         a+=1;                                        // кол-во баров
         if(Label1Buffer[i] <Label2Buffer[i]) u+=1;   // восходящие бары
         if(Label1Buffer[i] >Label2Buffer[i]) d+=1;   // нисходящие бары
         if(Label1Buffer[i]==Label2Buffer[i]) b+=1;   // Дожи
         Start=time[i];
        }
      if(Start==time[i]&&a<=limit)
        {
         Print(i," / ",u," / ",d," / ",b," / ",a," / ",limit);//
        }
      if(a==limit) 
        {
         ObjectCreate(0,"STAT1",OBJ_TEXT,0,time[0],high[0]+750*Point);
         ObjectSetText("STAT1",d,8,"Arial",clrBlack);
         ObjectCreate(0,"STAT2",OBJ_TEXT,0,time[0],low[0]-250*Point);
         ObjectSetText("STAT2",u,8,"Arial",clrBlack);
         Print(d/u);
        }
     }
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 0
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 1 / 3041 / 2971 / 41 / 6053 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 2 / 3041 / 2970 / 41 / 6052 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 3 / 3041 / 2969 / 41 / 6051 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 4 / 3041 / 2968 / 41 / 6050 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 5 / 3041 / 2967 / 41 / 6049 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 6 / 3041 / 2966 / 41 / 6048 / 6053

おそらく普通の方法があるのでしょうが、私は「車輪の再発明」をしています)

アドバイスをお願いします。

 
MakarFX:

バーのステータスを正しく表示するには?

そうすると、正しくカウントされるのですが、データを使おうとすると "0 "と表示されます。

おそらく普通の方法があるのでしょうが、私は「車輪の再発明」をしています)

アドバイスをお願いします。

全てint変数で、割り算の結果が0より小さいので、0としたようです。

試してみてください。

Print((double)d/u);
 
Galim_V:

チェスのように?1手足りない。意味を考えてみる。ヴァレリーさん、ありがとうございます。

в глобальной области
int ind=0, Ind=0;
......

 if(ParSar>MaxClose&&chekt==1){

    ticket=_OrderSend(NULL,OP_BUYSTOP,0.01,MaxClose+(spread*Point()),0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
  }
    }
    if(MinClose!=0){
   if(ParSar<MinClose&&chekt==1){
    _price= NormalizeDouble( MinClose-(spread*Point()),Digits);
    ticket=_OrderSend(NULL,OP_SELLSTOP,0.01,_price,0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
........

for(i=Ind,i<1,Ind--) // вместо Ind OrderTotal правильнее, если есть и другие ордера в терминале
{OrderSelect( _Tacket[i], SELECT_BY_TICKET )
проверки и действия
}
// Здесь запомнить тикет в массив _тикет и тип ордера тоже и запомнить последний индекс массива!!!

 //А потом в Ордер селект подставлять значение массива _тикет) Цикл по индексу массива _тикет от 1 до последнего индекса.
 
Mihail Matkovskij:

全てint変数で、割り算の結果が0より小さいので、0としたようです。

試してみてください。

ありがとうございます。
 
前回のプロジェクトで お世話になった皆さん、本当にありがとうございました。

次のEAのための別のアイデアです、多分誰かがすでにORBO(オープンレンジブレーキアウト)戦略に精通している?

 

注文を開く際に、この定義を簡略化する関数があれば教えてください。

if(Bid < OpenPrice && Bid > OpenPrice-10*Point)
if(Ask > OpenPrice && Ask < OpenPrice+10*Point)
価格がこの範囲に収まらない場合は、注文を開けないというものである
 
MakarFX:

注文を開く際に、この定義を簡略化する関数があれば教えてください。

価格がこの範囲に収まらない場合は、注文を出さないというものである

紙に描く。

OpenPrice _________________________

入札 ______________________________________

OpenPrice-10*_Point________________________


画像から、OpenPrice - Bidは10*_Pointより高くてはならないことがわかります。

 
Alexey Viktorov:

まあ、紙に描けばいいんですけどね。

OpenPrice _________________________

入札 ______________________________________

OpenPrice-10*_Point________________________


画像から、OpenPrice - Bidは10*_Point以上であってはならないことが分かります。

モジュールの違い。モジュール無しでは、トップゾーンのみが条件に該当します。オープンプライス-ビッド|>10*_ポイントオープニング条件

 
Alexey Viktorov:

まあ、紙に描けばいいんですけどね。

OpenPrice _________________________

入札 ______________________________________

OpenPrice-10*_Point________________________


画像から、OpenPrice - Bidは10*_Pointより高くてはならないことがわかります。

あなたには驚かされます。