どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 662

 
さて、RSIのiMAOnArrayをすでに使える状態にしている方はいらっしゃいますか?
 
berezhnuy:
さて、RSIのiMAOnArrayをすでに用意している人はいるのでしょうか?

誰もあまり「助けて」と応えてくれない理由がよくわかる...。
 
berezhnuy:
さて、RSIのiMAOnArrayをすでに使える状態にしている方はいらっしゃいますか?

コドベースの中にありますから、調べてみてください。
 
同志よ。練習のために、最もシンプルなテイクオーバーのディスプレイを作ることにしました。しかし結局、チャート上でタイムフレームを変更し、吸収のあるタイムフレームに戻すと、またアラートが発動してしまうという問題があった。バーごとに1回だけアラートするオプションを見つけましたが、タイムフレームを切り替えるとまたすべてがリセットされます。
if (Bars != ThisBarTrade ) {
   ThisBarTrade = Bars;  // ensure only one trade opportunity per bar
   // Trade logic goes here
}
以下は、グラフィカルな絵はなく、ロジックだけのコードそのものです。どのように修正するのか?
   if(engulfAlerter && Open[2]>Close[2] && Open[1]<Close[1] && Close[1]>Open[2])
      {
         Alert("Bullish Engulf");
      }
   if(engulfAlerter && Open[2]<Close[2] && Open[1]>Close[1] && Close[1]<Open[2])
      {
         Alert("Bearish Engulf");
      }
追伸:インダクタは、他の時間軸に切り替えている間、初期化中に条件「ThisBarTrade」をリセットします。
 

チケットの購入と売却を別々にする方法を教えてください。

ticket=OrderSend("EURUSD",OP_SELL,SellLot,Bid,3,0,0,", MAGICMA,0,Red)を実行。


さもなくば

{

OrderSelect(ticket-3,SELECT_BY_POS,MODE_TRADES);

OrderClose(ticket-3,SellLot,Ask,3,Red)です。


}

ticket-3 特に、TKトレードは、複数の注文の価格を平均化したようなものです ) しかし、買いチケットと売りチケットはどのように分離するのですか? 3つ前に開いた注文を取ることができます )また、販売用

 

ハローフレンド!)そんな悩みを抱えています。

起動時にテンプレート(必要なインディケータとグラフィックオブジェクトを含む)を開き、データを分析して取引するプログを書きました。チャート上で実行するだけならすべてうまくいきますが、テスターで実行すると、視覚化されたときのみ動作します。ということは、通常のテストモードでは、テンプレートを読み込まずにチャート上で実行するだけなので、動作しないのでは...。また、最適化についてはどうでしょうか。かなりの数のパラメータがあり、可視化しながら各オプションを手動で実行するのは非常に無理があります。

help plz)) 最適化とテンプレートでどう解決するのでしょうか?

 
evillive:

スコア )))


ただ、MQLで書いたわけではないのですが、形式的にはそこが問題です(。

そして、それはどのように判断されたのでしょうか。

値の数は非常に限られているので、直接的なブルートフォースで確認することができます。

#property strict

/******************************************************************************/
void fun1(int const A) {
  Print("fun1()");

  if (A == 0 || A == 1) {
    Print("fun1 do!");
  }
}

/******************************************************************************/
void fun2(int const A) {
  Print("fun2()");

  if (A != 2) {
    Print("fun2 do!");
  }
}

/******************************************************************************/
void Гарантия_0_1_2(int const A) {
  switch (A) {
  case 0:
  case 1:
  case 2:
    fun1(A);
    fun2(A);
    break;
  default:
    Print("Не соблюдены условия (теоремы)");
  }
}

/******************************************************************************/
void OnStart() {
  for (int A = 0, limit = 4; A < limit; A++) {
    Print("Проверяем для A = ", A);
    Гарантия_0_1_2(A);
  }
}

ここで、私たちは手に入れます。

22:52:38 Script 3 EURUSDm,H1: loaded successfully
22:52:38 3 EURUSDm,H1: initialized
22:52:38 3 EURUSDm,H1: Проверяем для A = 0
22:52:38 3 EURUSDm,H1: fun1()
22:52:38 3 EURUSDm,H1: fun1 do!
22:52:38 3 EURUSDm,H1: fun2()
22:52:38 3 EURUSDm,H1: fun2 do!
22:52:38 3 EURUSDm,H1: Проверяем для A = 1
22:52:38 3 EURUSDm,H1: fun1()
22:52:38 3 EURUSDm,H1: fun1 do!
22:52:38 3 EURUSDm,H1: fun2()
22:52:38 3 EURUSDm,H1: fun2 do!
22:52:38 3 EURUSDm,H1: Проверяем для A = 2
22:52:38 3 EURUSDm,H1: fun1()
22:52:38 3 EURUSDm,H1: fun2()
22:52:38 3 EURUSDm,H1: Проверяем для A = 3
22:52:38 3 EURUSDm,H1: Не соблюдены условия (теоремы)
22:52:38 3 EURUSDm,H1: uninit reason 0
22:52:38 Script 3 EURUSDm,H1: removed

イコールであることがわかります。3つではなく、例えば300万個の値があったとしても、関数から結果を返して比較する、という機械チェックは可能です。全範囲で差がなければ、両者は等しいと言える。

変数の代わりに式が使われる場合、例えば関数呼び出しの場合、論理式の 計算が短絡的になるため、等価性は「予約のある等価性」になる。

 

みなさん、こんにちは。

別の指標を元に指標を作った。

最初のバッファはそのままカウントされます。

2番目のものはそうではありません。私はそれが "line1 > 0 "の後にすべてのバーでカウントを開始したいです。

私のExpert Advisorでは、基本的にそのようなことをしています。

if (line1 > 0 && time ==0){time=Time[i+0];}//сработало предварительное условие входа, записываем время
if (time > 0)shift=iBarShift(Symbol(),Period(),i+time);//находим индекс бара

そして、"shift >= shet "の後に描画条件が発生する。

変数 "shet "の外部パラメータを変更しても、インジケータに変化がない。

何が問題なのでしょうか?

インジケーターコードです。

#property indicator_buffers 2
#property indicator_color1 Lime 
#property indicator_color2 Red
//--- input parameters
extern int       Period_MA_r=14;
extern int       r2          =7;
extern int       Period_MA_1=46;
extern int       p2          =19;
extern int       shet=7;
extern int       s        =0;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,119);
   SetIndexEmptyValue(0,0.0);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,119);
   SetIndexEmptyValue(1,0.0);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted(),
   i,limit1,shift;
   limit1=Bars-counted_bars-1;
   double line1,signal_line;
   static datetime time;
   for(i=limit1;i>=0;i--) 
   {
   line1=0;
   signal_line=0;
   line1=iCustom(NULL,0,"indikator1",Period_MA_r,r2,1,i+0);
   signal_line=iCustom(NULL,0,"indikator2",Period_MA_1,p2,0,i+0);
   
   if (line1 > 0 && time ==0){time=Time[i+0];}//сработало предварительное условие входа, записываем время
   if (time > 0)shift=iBarShift(Symbol(),Period(),i+time);//находим индекс бара
   if (line1 == 0){time=0;}//если индикатор равен нолю, то время сбрасывается на ноль
   if (line1 > 0 && signal_line < s){ExtMapBuffer1[i]=Low[i]-95*Point;}
   if (line1 > 0 && shift >= shet && signal_line < s){ExtMapBuffer2[i]=High[i]+95*Point;}
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
Forexman77:

みなさん、こんにちは。

別の指標を元に指標を作った。

最初のバッファはそのままカウントされます。

2番目のものはそうではありません。私はそれが "line1 > 0 "の後にすべてのバーでカウントを開始したいです。

私のExpert Advisorでは、基本的にそのようなことをしています。

そして、"shift >= shet "の後に描画条件が発生する。

変数 "shet "の外部パラメータを変更しても、インジケータに変化がない。

何が問題なのでしょうか?

インジケーターコードです。


0を加えることに混乱があるようですが、この方法で試してみてください。

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int counted_bars=IndicatorCounted(),
   i,limit1,shift = 0;
   limit1=Bars-counted_bars-1;
   double line1,signal_line;
   static datetime time;
   for (i=limit1;i>=0;i--) 
   {
       line1=0.;
       signal_line=0.;
       line1 = iCustom (_Symbol, _Period,"indikator1",Period_MA_r,r2,1, i+0);       // Не понятно - зачем прибавлять 0 ???
       signal_line = iCustom (_Symbol, _Period,"indikator2",Period_MA_1,p2,0,i+0);  // Не понятно - зачем прибавлять 0 ???
   
       if (line1 > 0. && time == 0) {time = Time[i+0];}                   //сработало предварительное условие входа, записываем время [тоже + 0]
       if (time > 0.) shift= i + iBarShift (_Symbol, _Period, time);      //находим индекс бара
       if (line1 == 0.) {time = 0;}                                       //если индикатор равен нолю, то время сбрасывается на ноль
       if (line1 > 0.)
       {
           if (signal_line < s)
           {
               ExtMapBuffer1[i] = Low[i] - 95.*Point;
               if (shift >= shet) {ExtMapBuffer2[i] = High[i]+95.*Point;}
           }
       }
   }
   return(0);
}
//+------------------------------------------------------------------+
 

こんにちは。

ターミナルで、注文行をダブルクリックすると、修正ウィンドウが開く。

しかし、ある注文の 値と別の注文のテイクプロフィットが線上にある場合、最後に変更された注文が開く。

mql4には、インジケータ内の必要な注文をクリックすると、注文修正ウィンドウが開く機能がありますか?