externdouble SL =100, TP =200, Tral =0, steps =2, Level =100;externint 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];}}
Lütfen yardım et.
1.mq4 (ekli) EA'nın görsel testi sırasında, 3-cci-h3 göstergesini (ekli) çizelgeye sürükleyin, o zaman, göründüğü gibi, hesaplanan cci'nin kesinlikle aynı parametreleriyle, gösterge sinyalleri ve gerçek cci (sağ üst köşedeki nesne metni) eşleşmiyor.
NİYE YA?
Ve nedense bu türkiyede uyarılar çalışmıyor.
Danışman kodu:
Gösterge kodu:
//+------------------------------------------- --------------------+ //| i-3CCI-h.mq4 | //| johnfantom ve kimiv | //| http://www.kimiv.ru | //| | //| 02.01.2006 Tek şişede 3 TF'li CCİ. | //+------------------------------------------- --------------------+ # mülkiyet telif hakkı "johnfantom & KimIV" #özellik bağlantısı "http://www.kimiv.ru"
//------- Göstergenin harici parametreleri ---------------------------------- harici int CCI_Period_0 = 14; // Mevcut TF için CCI dönemi harici int Seviye_0 = 100; // Mevcut TF için CCI seviyesi harici int TF_1 = 60; // İlk TF'nin dakika sayısı harici int CCI_Period_1 = 14; // İlk TF için CCI dönemi harici int Düzey_1 = 100; // İlk TF için CCI seviyesi harici int TF_2 = 240; // İkinci TF'nin dakika sayısı harici int CCI_Period_2 = 14; // İkinci TF için CCI dönemi harici int Düzey_2 = 100; // İkinci TF için CCI seviyesi harici int NumberOfBars = 1000; // Hesaplanacak çubuk sayısı (0-tümü) harici int ExtBars=3; int başına;
//------- Gösterge arabellekleri --------------------------------- --- çift buf0[];
IndicatorCounted'ın göstergede 0 ve danışmanda -1 verdiği ortaya çıktı (işlevde doğruluk kontrolü var - böylece> = 0, bu nedenle danışmanda dikkate alınmaz)
IndicatorCounted'ın göstergede 0 ve danışmanda -1 verdiği ortaya çıktı (işlevde doğruluk kontrolü var - böylece> = 0, bu nedenle danışmanda dikkate alınmaz)
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); }
Buradaki hata nedir, günlükte görüntülenen 4051 kodu siparişi kapatırken doğru bilet değil, söyle pliz ??
Açma ve kapama farklı kenelerde gerçekleşir. Ve danışman, bir zamanlar t değişkenine neyin atandığını artık hatırlamıyor. Veya onu global veya statik hale getirmek gerekir.
Global, fonksiyonların dışında tanımlanır. Veya statik int olarak bildirin
Açma ve kapama farklı kenelerde gerçekleşir. Ve danışman, bir zamanlar t değişkenine neyin atandığını artık hatırlamıyor. Veya onu global veya statik hale getirmek gerekir.
Global, fonksiyonların dışında tanımlanır. Veya statik int olarak bildirin
kesinlikle kazandığın ve unuttuğun için teşekkürler))
1.mq4 (ekli) EA'nın görsel testi sırasında, 3-cci-h3 göstergesini (ekli) çizelgeye sürükleyin, o zaman, göründüğü gibi, hesaplanan cci'nin kesinlikle aynı parametreleriyle, gösterge sinyalleri ve gerçek cci (sağ üst köşedeki nesne metni) eşleşmiyor.
NİYE YA?
Ve nedense bu türkiyede uyarılar çalışmıyor.
Danışman kodu:
Gösterge kodu:
//+------------------------------------------- --------------------+
//| i-3CCI-h.mq4 |
//| johnfantom ve kimiv |
//| http://www.kimiv.ru |
//| |
//| 02.01.2006 Tek şişede 3 TF'li CCİ. |
//+------------------------------------------- --------------------+
# mülkiyet telif hakkı "johnfantom & KimIV"
#özellik bağlantısı "http://www.kimiv.ru"
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 1
#özellik göstergesi_color1 DodgerBlue
#özellik göstergesi_maksimum 1,4
#özellik göstergesi_level1 0
#özellik göstergesi_minimum -1.2
//------- Göstergenin harici parametreleri ----------------------------------
harici int CCI_Period_0 = 14; // Mevcut TF için CCI dönemi
harici int Seviye_0 = 100; // Mevcut TF için CCI seviyesi
harici int TF_1 = 60; // İlk TF'nin dakika sayısı
harici int CCI_Period_1 = 14; // İlk TF için CCI dönemi
harici int Düzey_1 = 100; // İlk TF için CCI seviyesi
harici int TF_2 = 240; // İkinci TF'nin dakika sayısı
harici int CCI_Period_2 = 14; // İkinci TF için CCI dönemi
harici int Düzey_2 = 100; // İkinci TF için CCI seviyesi
harici int NumberOfBars = 1000; // Hesaplanacak çubuk sayısı (0-tümü)
harici int ExtBars=3;
int başına;
//------- Gösterge arabellekleri --------------------------------- ---
çift buf0[];
//+------------------------------------------- --------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- --------------------+
geçersiz init() {
göstergeDigits(1);
SetIndexBuffer(0, buf0);
SetIndexLabel(0, "i-3CCI-h");
SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
SetIndexEmptyValue(0, 0);
}
//+------------------------------------------- --------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- --------------------+
geçersiz tanım() {
Yorum("");
}
//+------------------------------------------- --------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- --------------------+
geçersiz başlangıç() {
çift cci0, cci1, cci2;
int nb1, nb2,sayım;
int LoopBegin, sh;
if (NumberOfBars==0) LoopBegin=Bars-1;
başka LoopBegin=NumberOfBars-1;
LoopBegin=MathMin(Barlar-1, LoopBegin);
say=GöstergeCounted();
for (sh=count; sh>=0; sh--) {
nb1=iBarShift(BOŞ, TF_1, Zaman[sh+1], Yanlış);
nb2=iBarShift(NULL, TF_2, Zaman[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);
/* çift 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);
dizi dizgi[3];
str[0]=s1;
str[1]=s2;
str[2]=s3;
colorcol=Kireç;
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=Kırmızı;
if(cci[y]>Seviye_0) col=Su;
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()," ",
ZamanYıl(Zaman[sh]),".",
TimeDay(Saat[sh]),".",
ZamanAy(Zaman[sh]),"; ",
TimeHour(Time[sh]),":",
ZamanDakika(Saat[sh])," ",
"Satın almak");}}
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()," ",
ZamanYıl(Zaman[sh]),".",
TimeDay(Saat[sh]),".",
ZamanAy(Zaman[sh]),"; ",
TimeHour(Time[sh]),":",
ZamanDakika(Saat[sh])," ",
"Satış");}}
}
}
//+------------------------------------------- --------------------+
Kendiniz deneyin pliz. bir şey benim için hiç çalışmıyor. Fuflo çekiyor.
Teoride, çizgiler eşleşmelidir. Ama pratikte biraz farklı çıkıyor.
Lütfen bana neyin yanlış olabileceğini söyle?
Değeri arabelleğe yazan özyinelemeli bir işlev yaptı.
göstergeden çağrıldığında, danışmana yapıştırmaya çalıştığımda iyi çalışıyor - cevap 0
Ne yanlış olabilir?
Lütfen bana neyin yanlış olabileceğini söyle?
Değeri arabelleğe yazan özyinelemeli bir işlev yaptı.
göstergeden çağrıldığında, danışmana yapıştırmaya çalıştığımda iyi çalışıyor - cevap 0
Ne yanlış olabilir?
belki arabellek boyutu ayarlanmamıştır!?
Bir fişin olduğu yerde bulundu.
IndicatorCounted'ın göstergede 0 ve danışmanda -1 verdiği ortaya çıktı (işlevde doğruluk kontrolü var - böylece> = 0, bu nedenle danışmanda dikkate alınmaz)
Bu neden oluyor ve hata nasıl kaldırılır?
MT4 yapı 225, eurusd M1'i eşleştirin.
Bir fişin olduğu yerde bulundu.
IndicatorCounted'ın göstergede 0 ve danışmanda -1 verdiği ortaya çıktı (işlevde doğruluk kontrolü var - böylece> = 0, bu nedenle danışmanda dikkate alınmaz)
Bu neden oluyor ve hata nasıl kaldırılır?
MT4 yapı 225, eurusd M1'i eşleştirin.
https://docs.mql4.com/en/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);
}
Açma ve kapama farklı kenelerde gerçekleşir. Ve danışman, bir zamanlar t değişkenine neyin atandığını artık hatırlamıyor. Veya onu global veya statik hale getirmek gerekir.
Global, fonksiyonların dışında tanımlanır. Veya statik int olarak bildirin
Açma ve kapama farklı kenelerde gerçekleşir. Ve danışman, bir zamanlar t değişkenine neyin atandığını artık hatırlamıyor. Veya onu global veya statik hale getirmek gerekir.
Global, fonksiyonların dışında tanımlanır. Veya statik int olarak bildirin
kesinlikle kazandığın ve unuttuğun için teşekkürler))
Ayarladığım Göstergede (daha sonra onları Zaman[i] ile karşılaştırmak için):
Sonra bir döngüde
Sonuç olarak , StrToTime (StartRange) ve StrToTime(EndRange) Sıfırlar döndürür.
- Neden ve nasıl düzeltilir?