[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 160 1...153154155156157158159160161162163164165166167...1145 新しいコメント Denis Lysenko 2009.07.23 05:02 #1591 extern double SL=100, TP=200, Tral=0, steps=2, Level=100; extern int TF1=0, TF2=60, TF3=240, per1=14, per2=14, per3=14, shiftbars=20; double sl, tp, cci[3], lastbar, lastpos=-1, lot=0.1, x=0.0001, calc, price, lb; int init(){if( SL< Tral) SL= Tral;if(MarketInfo(Symbol(),MODE_DIGITS)==3) x=0.01; TP*= x; SL*= x; Tral*= x; calc=MathPow(2, steps)*0.1;} double lot(){int l;double lotiki=0.1;bool isit=false; for(int i=1; i<= steps; i++){ if(!OrderSelect(OrdersHistoryTotal()- i, SELECT_BY_POS, MODE_HISTORY))break; if(OrderProfit()>0) lotiki*=2; l++; if(OrderLots()== calc) { isit=true;break;} if(OrderProfit()<0) break;} if( l== steps+1 || isit) lotiki=0.1; return( lotiki);} int Trailing() {double Tip, SL1; for(int i=OrdersTotal()-1; i>=0; i--){ OrderSelect( i, SELECT_BY_POS);if(OrderMagicNumber()==350000){ Tip=OrderType(); SL1=OrderStopLoss(); if( Tip==0) {if(Bid- SL1> Tral) {OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Tral,OrderTakeProfit(),0);break;}} if( Tip==1) {if( SL1-Ask> Tral) {OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Tral,OrderTakeProfit(),0);break;}} }}} int Closeorders(){ for(int i=OrdersTotal()-1; i>=0; i--){OrderSelect( i, SELECT_BY_POS);if(OrderMagicNumber()==350000) {if(OrderType()==0) price=Bid;else price=Ask; OrderClose(OrderTicket(),OrderLots(), price,50);break;}} } void start(){ //if(iBarShift(NULL,0,lastbar,false)==0)return; //lastbar=CurTime(); if(OrdersTotal()!=0 && Tral!=0){ Trailing();} //cci=iCustom(NULL,0,"i-3CCI-h3",CCI_Period_0,Level_0,TF_1,CCI_Period_1,Level_1,TF_2,CCI_Period_2,Level_2,1000,-1,0,0); cci[0]=iCCI(NULL, TF1, per1,0,1); cci[1]=iCCI(NULL, TF2, per2,0,0); cci[2]=iCCI(NULL, TF3, per3,0,0); 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) col=Aqua; if( cci[ y]<- Level) col=DarkViolet; ObjectSetText("textSignal"+ y, str[ y],15,"Tahoma", col); } if(OrdersTotal()!=0)return; if( cci[0]> Level && cci[1]> Level && cci[2]> Level && (/*iBarShift(NULL,0,lb,false)>shiftbars || */ lastpos!=0)) { Closeorders(); tp=Ask+ TP; sl=Ask- SL;if( TP==0) tp=0;if( SL==0) sl=0; OrderSend(Symbol(),0, lot(),Ask,50, sl, tp,"i-3CCI-h3_Buy",350000,0); lastpos=0; lb=Time[0];} if( cci[0]<- Level && cci[1]<- Level && cci[2]<- Level && (/*iBarShift(NULL,0,lb,false)>shiftbars || */ lastpos!=1)) { Closeorders(); tp=Bid- TP; sl=Ask+ SL;if( TP==0) tp=0;if( SL==0) sl=0; OrderSend(Symbol(),1, lot(),Bid,50, sl, tp,"i-3CCI-h3_Sell",350000,0); lastpos=1; lb=Time[0];} } よろしくお願いします。 EA1.mq4(添付)のビジュアルテスト中に、3-cci-h3(添付)のインジケータをチャート上に置いた場合、見かけ上、全く同じパラメータで計算したインジケータのcciシグナルと実際のcci(右上のオブジェクトテキスト)が一致しない。 なぜ? このインジケーターでアラートが機能しないのはなぜですか? Expert Advisor コード。 インジケーターコードです。 //+------------------------------------------------------------------+ | i-3CCI-h.mq4|株式会社ゆめかな //| johnfantomとkimIVの場合。 //| http://www.kimiv.ru | //| | //|2006.01.02 CCIで3TFを1本で。 //+------------------------------------------------------------------+ #property copyright "johnfantom & KimIV" #プロパティリンク "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; // 現在のTFのCCIレベル extern int TF_1 = 60; // 最初の時間枠の分数 extern int CCI_Period_1 = 14; // 最初のTFのCCI周期 extern int Level_1 = 100; // 最初のTFのCCIレベル extern int TF_2 = 240; // 第二TFの分数 extern int CCI_Period_2 = 14; // 2番目のTFのCCI周期 extern int Level_2 = 100; // 2本目のTFのCCIレベル extern int NumberOfBars = 1000; // バーの数(0-All) extern int ExtBars = 3; int per; //------- インジケータ・バッファ ------------------------------------------------ double buf0[]; //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ void init() { IndicatorDigits(1)です。 SetIndexBuffer(0, buf0); SetIndexLabel(0, "i-3CCI-h")を設定する。 SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2) を設定します。 SetIndexEmptyValue(0, 0)を設定します。 } //+------------------------------------------------------------------+ //| カスタムインジケーター初期化関数 //+------------------------------------------------------------------+ void deinit() { Comment(")です。 } //+------------------------------------------------------------------+ //| カスタムインジケータ反復関数 //+------------------------------------------------------------------+ 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。 文字列s1="cci-0 ***"+DoubleToStr(cci[0],3).DoubleToStr(cci[0],3)です。 文字列 s2="cci-1 ***"+DoubleToStr(cci[1],3); 文字列 s3="cci-2 ***"+DoubleToStr(cci[2],3); 文字列str[3]。 str[0]=s1; str[1]=s2; str[2]=s3; color col=Lime。 for(int y=0;y<3;y++) {ObjectCreate("テキストシグナル "+y,OBJ_LABEL,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) アラート(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) アラート(Symbol(),Period()," ", TimeYear(Time[sh]),", TimeDay(Time[sh])、", TimeMonth(Time[sh])、", TimeHour(Time[sh])、":"。 TimeMinute(Time[sh])、" ", "セール");}} } } //+------------------------------------------------------------------+ インジケータを無償で作成します [WARNING CLOSED!] Any newbie I will write the 削除済み 2009.07.23 06:25 #1592 自分で試してみてください。 全然うまくいかないんです。全く機能していない。 線が一列に並ぶようになっています。でも、実際にはちょっと違うんです。 int start() { int counted_bars=IndicatorCounted(); //---- ObjectCreate("fibowhite",OBJ_TRENDBYANGLE,0,0,0,0,0); //ObjectSet("fibowhite",OBJPROP_ANGLE,angle_); ObjectSet("fibowhite", OBJPROP_TIME1,Time[5]); ObjectSet("fibowhite", OBJPROP_TIME2,Time[1]); ObjectSet("fibowhite", OBJPROP_PRICE1,Low[5]); ObjectSet("fibowhite", OBJPROP_PRICE2,Low[1]); ObjectSet("fibowhite", OBJPROP_COLOR,Red); //---------------------------------------------------------- ObjectCreate("fibowhite1",OBJ_TRENDBYANGLE,0,0,0,0,0); ObjectSet("fibowhite1", OBJPROP_TIME1,Time[5]); //ObjectSet("fibowhite1",OBJPROP_TIME2,Time[1]); ObjectSet("fibowhite1", OBJPROP_PRICE1,Low[5]); //ObjectSet("fibowhite1",OBJPROP_PRICE2,Low[1]); ObjectSet("fibowhite1", OBJPROP_COLOR,Green); WindowRedraw(); double awd=ObjectGet("fibowhite", OBJPROP_ANGLE); Comment("AngleRED= ",ObjectGet("fibowhite", OBJPROP_ANGLE),"\n AngleWHITE= ",ObjectGet("fibowhite1", OBJPROP_ANGLE)); ObjectSet("fibowhite1", OBJPROP_ANGLE,ObjectGet("fibowhite", OBJPROP_ANGLE)); //---- return(0); } 削除済み 2009.07.23 07:00 #1593 何が問題なのか、教えてください。 バッファに値を書き込む再帰的な関数を作ってみました。 インジケータから呼び出すと正常に動作するが、EAに組み込もうとすると、答えが0になる 何が問題なのでしょうか? 削除済み 2009.07.23 08:14 #1594 Andrej78 писал(а)>> 何が問題なのか、教えてください。 バッファに値を書き込む再帰的な関数を作ってみました。 インジケータから呼び出すと正常に動作するが、EAに組み込もうとすると、答えが0になる 何が問題なのでしょうか? バッファサイズが設定されていないのでは!? 削除済み 2009.07.23 08:30 #1595 ヒッチが発生する場所を見つけた。 IndicatorCountedは インジケータでは0、Expert Advisorでは-1となることが判明しました(この関数は正しさをチェックするため、>0でなければならず、したがってExpert Advisorでは考慮されていません)。 エラーの原因と対処法を教えてください。 MT4ビルド225、eurusd M1。 削除済み 2009.07.23 09:03 #1596 Andrej78 писал(а)>> ヒッチが発生する場所を見つけた。 IndicatorCountedは インジケータでは0、Expert Advisorでは-1となることが判明しました(この関数は正しさをチェックするため、>0でなければならず、したがってExpert Advisorでは考慮されていません)。 エラーの原因と対処法を教えてください。 MT4ビルド225、eurusd M1。 https://docs.mql4.com/ru/customind evgenio 2009.07.23 10:09 #1597 if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true) { int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green); bay=false; Print (GetLastError()); } } if (s>(High[0]-(High[0]-Low[0])/2) && bay==false) { OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES); Print (GetLastError()); OrderClose(t,0.1,Ask,5,Red); } ロギングコード4051 not right ticket when closing order please adviseのエラーは何ですか? [WARNING CLOSED!] Any newbie Any rookie question, so Buy order problems Victor Nikolaev 2009.07.23 10:16 #1598 evgenio писал(а)>> if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true) { int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green); bay=false; Print (GetLastError()); } } if (s>(High[0]-(High[0]-Low[0])/2) && bay==false) { OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES); Print (GetLastError()); OrderClose(t,0.1,Ask,5,Red); } 注文を閉じるときに、ログコード4051 not a valid ticketが表示されるバグについて教えてください。 オープニングとクロージングは異なるティックで行われます。また、Expert Advisorは、かつて変数tに代入されたものをもはや記憶していない。グローバルにするか、スタティックにするかのどちらかです。 グローバル変数は、関数の外部で定義されます。 または、static int として宣言することもできます。 evgenio 2009.07.23 10:20 #1599 Vinin >> : オープニングとクロージングは異なるティックで行われます。また、Expert Advisorは、かつて変数tに代入されたものをもはや記憶していない。グローバルにするか、スタティックにするかのどちらかです。 グローバル変数は、関数の外部で定義されます。 または、static int として宣言することもできます。 ありがとうございます、忘れてました )) Oleg 2009.07.23 14:30 #1600 Indicatorに設定しました(その後、Time[i]と比較するため)。 extern datetime StartRange = D'1970.12.24'; extern datetime EndRange = D'2020.12.24'; その後、ループの中で Comment( "\n", "Time[i] = " , Time[ i], "\n", "StrToTime(StartRange) = " , StrToTime( StartRange), "\n", "StrToTime(EndRange) = " , StrToTime( EndRange), "\n" ); その結果、StrToTime(StartRange) とStrToTime(EndRange) は Zeroを生成 します。 - その理由と解決方法を教えてください。 1...153154155156157158159160161162163164165166167...1145 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
EA1.mq4(添付)のビジュアルテスト中に、3-cci-h3(添付)のインジケータをチャート上に置いた場合、見かけ上、全く同じパラメータで計算したインジケータのcciシグナルと実際のcci(右上のオブジェクトテキスト)が一致しない。
なぜ?
このインジケーターでアラートが機能しないのはなぜですか?
Expert Advisor コード。
インジケーターコードです。
//+------------------------------------------------------------------+
| i-3CCI-h.mq4|株式会社ゆめかな
//| johnfantomとkimIVの場合。
//| http://www.kimiv.ru |
//| |
//|2006.01.02 CCIで3TFを1本で。
//+------------------------------------------------------------------+
#property copyright "johnfantom & KimIV"
#プロパティリンク "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; // 現在のTFのCCIレベル
extern int TF_1 = 60; // 最初の時間枠の分数
extern int CCI_Period_1 = 14; // 最初のTFのCCI周期
extern int Level_1 = 100; // 最初のTFのCCIレベル
extern int TF_2 = 240; // 第二TFの分数
extern int CCI_Period_2 = 14; // 2番目のTFのCCI周期
extern int Level_2 = 100; // 2本目のTFのCCIレベル
extern int NumberOfBars = 1000; // バーの数(0-All)
extern int ExtBars = 3;
int per;
//------- インジケータ・バッファ ------------------------------------------------
double buf0[];
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
void init() {
IndicatorDigits(1)です。
SetIndexBuffer(0, buf0);
SetIndexLabel(0, "i-3CCI-h")を設定する。
SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2) を設定します。
SetIndexEmptyValue(0, 0)を設定します。
}
//+------------------------------------------------------------------+
//| カスタムインジケーター初期化関数
//+------------------------------------------------------------------+
void deinit() {
Comment(")です。
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
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。
文字列s1="cci-0 ***"+DoubleToStr(cci[0],3).DoubleToStr(cci[0],3)です。
文字列 s2="cci-1 ***"+DoubleToStr(cci[1],3);
文字列 s3="cci-2 ***"+DoubleToStr(cci[2],3);
文字列str[3]。
str[0]=s1;
str[1]=s2;
str[2]=s3;
color col=Lime。
for(int y=0;y<3;y++)
{ObjectCreate("テキストシグナル "+y,OBJ_LABEL,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)
アラート(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)
アラート(Symbol(),Period()," ",
TimeYear(Time[sh]),",
TimeDay(Time[sh])、",
TimeMonth(Time[sh])、",
TimeHour(Time[sh])、":"。
TimeMinute(Time[sh])、" ",
"セール");}}
}
}
//+------------------------------------------------------------------+
自分で試してみてください。 全然うまくいかないんです。全く機能していない。
線が一列に並ぶようになっています。でも、実際にはちょっと違うんです。
何が問題なのか、教えてください。
バッファに値を書き込む再帰的な関数を作ってみました。
インジケータから呼び出すと正常に動作するが、EAに組み込もうとすると、答えが0になる
何が問題なのでしょうか?
何が問題なのか、教えてください。
バッファに値を書き込む再帰的な関数を作ってみました。
インジケータから呼び出すと正常に動作するが、EAに組み込もうとすると、答えが0になる
何が問題なのでしょうか?
バッファサイズが設定されていないのでは!?
ヒッチが発生する場所を見つけた。
IndicatorCountedは インジケータでは0、Expert Advisorでは-1となることが判明しました(この関数は正しさをチェックするため、>0でなければならず、したがってExpert Advisorでは考慮されていません)。
エラーの原因と対処法を教えてください。
MT4ビルド225、eurusd M1。
ヒッチが発生する場所を見つけた。
IndicatorCountedは インジケータでは0、Expert Advisorでは-1となることが判明しました(この関数は正しさをチェックするため、>0でなければならず、したがってExpert Advisorでは考慮されていません)。
エラーの原因と対処法を教えてください。
MT4ビルド225、eurusd M1。
https://docs.mql4.com/ru/customind
if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true)
{
int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green);
bay=false;
Print (GetLastError());
}
}
if (s>(High[0]-(High[0]-Low[0])/2) && bay==false)
{
OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES);
Print (GetLastError());
OrderClose(t,0.1,Ask,5,Red);
}
if (k>k1+7 && s<(High[1]-(High[1]-Low[1])/2) && bay==true)
{
int t=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,NULL,NULL,"My order #",16384,0,Green);
bay=false;
Print (GetLastError());
}
}
if (s>(High[0]-(High[0]-Low[0])/2) && bay==false)
{
OrderSelect(t,SELECT_BY_TICKET,MODE_TRADES);
Print (GetLastError());
OrderClose(t,0.1,Ask,5,Red);
}
オープニングとクロージングは異なるティックで行われます。また、Expert Advisorは、かつて変数tに代入されたものをもはや記憶していない。グローバルにするか、スタティックにするかのどちらかです。
グローバル変数は、関数の外部で定義されます。 または、static int として宣言することもできます。
オープニングとクロージングは異なるティックで行われます。また、Expert Advisorは、かつて変数tに代入されたものをもはや記憶していない。グローバルにするか、スタティックにするかのどちらかです。
グローバル変数は、関数の外部で定義されます。 または、static int として宣言することもできます。
ありがとうございます、忘れてました ))
Indicatorに設定しました(その後、Time[i]と比較するため)。
その後、ループの中で
その結果、StrToTime(StartRange) とStrToTime(EndRange) は Zeroを生成 します。
- その理由と解決方法を教えてください。