[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 160

 
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 ] ; }
}
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"

#ö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.

 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 ) ;
  }
 

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?

 
Andrej78 писал(а) >>

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.

 
Andrej78 писал(а) >>

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);
  }

Buradaki hata nedir, günlükte görüntülenen 4051 kodu siparişi kapatırken doğru bilet değil, söyle pliz ??
 
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);
}

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

 
Vinin >> :

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):

 extern datetime StartRange           = D'1970.12.24' ;
extern datetime EndRange             = D'2020.12.24' ;


Sonra bir döngüde

   Comment (
       " \n " , "Time[i]                = "    , Time [ i ] ,
       " \n " , "StrToTime(StartRange)  = "    , StrToTime ( StartRange ) ,
       " \n " , "StrToTime(EndRange)    = "    , StrToTime ( EndRange ) ,
   " \n " ) ;


Sonuç olarak , StrToTime (StartRange) ve StrToTime(EndRange) Sıfırlar döndürür.

- Neden ve nasıl düzeltilir?