[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 159

 
1Rakso >> :

1)また、外部変数によって、どのように無効化するのでしょうか?

2) 最初に開いた注文は開いた時点でクローズし、その後の注文2、3などはクローズしないように設定することはできますか?例えば、買い注文(これが最初の注文)を出し、次に別の買い注文(これが2番目の注文)を出すなどして、この一連の注文のうち1番目の注文だけをСorderCloseで閉じるとしたらどうでしょうか。

https://www.mql5.com/ru/forum/105913 のアドレスページをご確認ください。

1)おおよそこのような感じです。

extern bool      AutoClose = True;
.......................................


//********* Закрытие позиций ****************************************
if ( AutoClose) {  
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_

2)

ロック(//)を解除してから

// return(0); // exit

で、最初の(または最後の)ポジションだけがクローズされます。

 
PyMbIH >> :

皆さん、こんにちは )))

助けてください。

mql4のプログラミングを始めたばかりです。

エキスパートアドバイザーの書き方

どうすればいいのでしょうか。

Expert Advisor を月曜日だけ動作させたい。

//Открытие и закрытие  позиций только в понедельник  
      if (TimeDayOfWeek(TimeCurrent()) == 1)
         return (0);  
 
rid писал(а)>>

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

 
Vinin >> :

Vininさん、ありがとうございます =)。

 
rid >> :

クロージング・ポジション」に目を通す。インジケータ信号で'。

1)おおよそこのような感じです。

2)

の前にあるブロック(//)を削除します。

// return(0); // exit

をクリックすると、最初のポジションだけがクローズされます。

ありがとう、rid!

たくさん助けてもらいました、まだまだ優しい人はいるんですね)

全部わかったよ!数学読んでくるね!時間とらせすぎじゃなかったかな?)

 

よろしくお願いします。

EA1.mq4(添付)のビジュアルテスト 中に、3-cci-h3(添付)のインジケータをチャート上に置いた場合、見かけ上、全く同じパラメータで計算したインジケータのcciシグナルと実際のcci(右上のオブジェクトテキスト)が一致しない。

なぜ?

このインジケーターでアラートが機能しないのはなぜですか?

Expert Advisor コード。

double lasthigh, lastlow, lasthigh2=200000, lastlow2=0, lastpos=0, t[2];

int start()
{Comment("");
lasthigh=High[1]; lastlow=Low[1];
if( lasthigh< lasthigh2) lasthigh2= lasthigh;
if( lastlow> lastlow2) lastlow2= lastlow;
t[0]= lasthigh2;
t[1]= lastlow2;  
string s1="lasthigh2 *** "+DoubleToStr( t[0],5);
string s2="lastlow2 *** "+DoubleToStr( t[1],5);
string str[2];
str[0]= s1;
str[1]= s2;
color col=Lime;
     for(int y=0; y<2; y++)
     {ObjectCreate("textSignal"+ y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+ y, OBJPROP_CORNER,1);
      ObjectSet("textSignal"+ y, OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+ y, OBJPROP_YDISTANCE, y*(20)+20+8);
      ObjectSetText("textSignal"+ y, str[ y],15,"Tahoma", col);
     }
  
  if( lastpos==0){if( lastlow2> lasthigh){
  Comment("PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!",
  "PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   "); lasthigh2=2000000; lastlow2=0; lastpos=1;}}
  else {if( lasthigh2< lastlow){Comment("POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!",
  "   POKUPKA!!!   POKUPKA!!!   POKEPKA!!!   POKEPKA!!!   POKEPKA!!!"); lasthigh2=2000000; lastlow2=0; lastpos=0;}}

}


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

//+------------------------------------------------------------------+
//|                                                     i-3CCI-h.mq4 |
//|                                               johnfantom & KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  02.01.2006  CCI с 3-х ТФ в одном флаконе.                       |
//+------------------------------------------------------------------+
#property copyright "johnfantom & KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_maximum 1.4
#property indicator_level1  0
#property indicator_minimum -1.2

//------- Внешние параметры индикатора -------------------------------
extern int CCI_Period_0 = 14;     // Период CCI для текущего ТФ
extern int Level_0      = 100;    // Уровень CCI для текущего ТФ
extern int TF_1         = 60;     // Количество минут первого ТФ
extern int CCI_Period_1 = 14;     // Период CCI для первого ТФ
extern int Level_1      = 100;    // Уровень CCI для первого ТФ
extern int TF_2         = 240;    // Количество минут второго ТФ
extern int CCI_Period_2 = 14;     // Период CCI для второго ТФ
extern int Level_2      = 100;    // Уровень CCI для второго ТФ
extern int NumberOfBars = 1000;  // Количество баров обсчёта (0-все)
extern int ExtBars=3; 
int per;


//------- Буферы индикатора ------------------------------------------
double buf0[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  IndicatorDigits(1);

  SetIndexBuffer(0, buf0);
  SetIndexLabel (0, "i-3CCI-h");
  SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
  SetIndexEmptyValue(0, 0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  Comment("");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  double cci0, cci1, cci2;
  int    nb1, nb2, count;
  int    LoopBegin, sh;


 	if ( NumberOfBars==0) LoopBegin=Bars-1;
  else LoopBegin= NumberOfBars-1;
  LoopBegin=MathMin(Bars-1, LoopBegin);
  count=IndicatorCounted();
  for ( sh= count; sh>=0; sh--) {
    nb1=iBarShift(NULL, TF_1, Time[ sh+1], False);
    nb2=iBarShift(NULL, TF_2, Time[ sh+1], False);

    cci0=iCCI(NULL, 0   , CCI_Period_0, PRICE_CLOSE, sh+1);
    cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);
    cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);
    
   /* double cci[3];
    cci[0]=cci0;
    cci[1]=cci1;
    cci[2]=cci2;
    string s1="cci-0 *** "+DoubleToStr(cci[0],3);
    string s2="cci-1 *** "+DoubleToStr(cci[1],3);
    string s3="cci-2 *** "+DoubleToStr(cci[2],3);
    string str[3];
    str[0]=s1;
    str[1]=s2;
    str[2]=s3;
    color col=Lime;
     for(int y=0;y<3;y++)
     {ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+y,OBJPROP_CORNER,1);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(20)+20+8);
      if(cci[y]>=0)col=Lime;else col=Red;
      if(cci[y]>Level_0) col=Aqua;
      if(cci[y]<-Level_0) col=DarkViolet;
      ObjectSetText("textSignal"+y,str[y],15,"Tahoma",col);
     }
*/
    if ( cci0> Level_0 && cci1> Level_1 && cci2> Level_2) { buf0[ sh]=1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Покупка");}}
    if ( cci0<- Level_0 && cci1<- Level_1 && cci2<- Level_2) { buf0[ sh]=-1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Продажа");}}
  }
}
//+------------------------------------------------------------------+
 
sergeev >> :

バイストップはこのように




また、オープンポジション自体からの保留はどのように設定するのでしょうか?

 
ArtY0m >> :

保留中の注文自体はどのように発注するのですか?

まず、最後に開いたポジションの始値をプログラムで決定する必要があります。

そのためには、あらかじめ用意された関数、例えば

関数 PriceOpenLastPos()。
この関数は、最後に建てたポジションの建値を返します。考慮すべき位置の選択は、外部パラメータで指定する。
sy - 市場商品の名前。このパラメータが設定されている場合、この関数は指定された楽器の位置のみを考慮します。デフォルト値である「」は、あらゆる市場商品を意味する。NULL 値は、現在の測定器を意味する。
op - 貿易業務、ポジションタイプ。有効な値:OP_BUY、OP_SELL、または-1。初期値-1 は任意の位置を意味する。
mn - 位置の識別子,MagicNumber.デフォルトの値である-1は、任意の識別子を意味する。
'KimIVの便利な機能

//-------

コードの一番最後に関数そのものを挿入します。

そして、START関数でそれを呼び出し、例えば必要な最後のポジション(買いまたは売り)の始値を設定するのです。

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

 
rid >> :

まず、最後にオープンしたポジションの価格をプログラムで決定する必要があります。

そのためには、あらかじめ用意された関数、例えば

関数 PriceOpenLastPos()。
この関数は、最後に建てたポジションの始値を返します。考慮すべきポジションの選定は、外部パラメータによって定義される。
sy - 市場商品の名前。このパラメータを設定すると、この機能はこの楽器の位置のみを考慮します。デフォルト値である「」は、あらゆる市場商品を意味する。NULL 値は、現在の測定器を意味する。
op - 貿易業務、ポジションタイプ。有効な値:OP_BUY、OP_SELL、または-1。初期値-1 は任意の位置を意味する。
mn - 位置の識別子,MagicNumber.デフォルトの値である-1は、任意の識別子を意味する。

'KimIVの便利な機能

//-------

コードの一番最後に関数そのものを挿入します。

START関数では、これを呼び出して、最後に欲しいポジション(買いまたは売り)の始値を設定します。

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

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

 

Indicatorで、ある条件を満たした場合、テキストファイルにメモ書きで一行入力したい(何があっても、仮に日時とする)。

ファイルが作成され、行が追加されますが、これはリアルタイムにのみ行われます。一方、私は歴史に取り組む際に、メモを取りたいと考えています。どなたか方法をご存じないでしょうか?

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