Ücretsiz bir mql4 danışmanı yazacağım - sayfa 13

 
oleg3791 : EA, grafik üzerinde beş fare tıklamasıyla dört satır oluşturdu

Gerekli sarı çizgiler

 #property strict

int       Количество;
datetime старый, новый= 0 ;
double    старая, новая= 0 ;

void OnInit ()
{
  Количество= 0 ;
   ObjectsDeleteAll ( 0 , "Линия" );
}

void OnChartEvent ( const int      id,   // идентификатор события   
                   const long &x, const double &yy,
                   const string & s)
{
   if (id!= CHARTEVENT_CLICK ) return ;
   if (Количество> 4 ){ OnInit (); return ;}
   string name[ 5 ]={ "" , "Линия_1" , "Линия_2" , "Линия_3" , "Линия_4" };
   int y= int (yy);
   int O;
  старый=новый; старая=новая;
   ChartXYToTimePrice ( 0 , int (x),y,O,новый,новая); // xy ---> время,цену
   if (Количество> 0 )
   ObjectCreate (name[Количество], OBJ_TREND , 0 ,старый,старая,новый,новая);
   ObjectSet (name[Количество], OBJPROP_RAY , false );
   ObjectSet (name[Количество], OBJPROP_COLOR ,Gold);
   ObjectSet (name[Количество], OBJPROP_WIDTH , 2 );
  Количество++; 
}

void OnDeinit ( const int причина)
{
   OnInit ();
}
 
STARIJ :

Gerekli sarı çizgiler

Teşekkürler!!!
 
oleg3791 : !!!

Şimdi bize buradan nasıl kazanç elde edileceğini anlatın... Yoksa oyun mu kurmak gerekiyor?

 

Herkese merhaba, lütfen danışmanın kodunda bir hata bulmama yardım edin, her şeyi inceledim, her şey kodda doğru yazılmış gibi görünüyor, ancak bir nedenden dolayı program doğru ticaret yapmıyor! Fikir şudur: EA aynı yönde iki uzun mum aramalıdır (mumlar arasındaki uzunluk EA'da düzenlenir, yani yöne bağlı olarak iki minimum veya maksimum mum arasında), fiyat kırılırsa Son mumun minimum veya maksimum ters yönde, bir anlaşma açılmalıdır (Dosyaya ekli çizelgede durumların örnek fotoğrafları). EA, bu tür her uygun durumda alım satım açmalıdır ve bir nedenden dolayı alım satımları yalnızca günler arasındaki alım satım pencerelerinde açar. Programcılar için zor olmayan durum budur, lütfen yardım edin, hatayı düzeltin. Aşağıdaki danışman koduna ve ekteki dosyaya bakın.

 //+-----------------------------------------------------------------------------------------------+
//|                                                                           Spacing_Candles.mq4 |
//|                                                                        Copyright 2017, Vladim |
//|                                                                            vk.com/id229534564 |
//|                                                                  Mail: Vladim120385@yandex.ru |
//+-----------------------------------------------------------------------------------------------+
#property copyright "Copyright 2017, Vladim"
#property link        "vk.com/id229534564"
#property version    "1.00"
#property strict

//--- параметры советника
extern string paramEA    = "" ;     // Parameters EA
extern double volume     = 0.01 ;   // Volume
extern double stopLoss   = 5 ;     // StopLoss
extern double takeProfit = 1.5 ;     // TakeProfit
extern double maxSpacing = 150 ;   // MaxSpacing
extern double minSpacing = 30 ;     // MinSpacing
extern double TrailingStop  = 0 ;   // TrailingStop
extern int     magic      = 127 ;     // Magic

//--- глобальные переменные
datetime newCandle;
int tip;

//+-----------------------------------------------------------------------------------------------+
int OnInit ()
{
   
   return ( INIT_SUCCEEDED );
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   
}
//+-----------------------------------------------------------------------------------------------+
void OnTick ()
{
   if (newCandle != Time [ 0 ]) FindPattern();
   newCandle = Time [ 0 ];
}
//+-----------------------------------------------------------------------------------------------+
void OpenOrder( int type)   // Откроем рыночный ордер
{
   if (type == OP_BUY )   if ( OrderSend ( _Symbol , OP_BUY ,  volume, Ask , 0 , 0 , 0 , "" , magic, 0 )) SetSLTP( OP_BUY );
   if (type == OP_SELL ) if ( OrderSend ( _Symbol , OP_SELL , volume, Bid , 0 , 0 , 0 , "" , magic, 0 )) SetSLTP( OP_SELL );
}
//+-----------------------------------------------------------------------------------------------+
void SetSLTP( int type)   // Установим стоп приказы
{
   double sl = 0 ;
   double tp = 0 ;
   
   if (type == OP_BUY )
       for ( int i = 0 ; i < OrdersTotal (); i++)
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
             if ( OrderSymbol () == _Symbol && OrderMagicNumber () == magic && OrderType () == OP_BUY && OrderStopLoss () == 0 )
            {
               sl = NormalizeDouble ( Low [ 1 ] - stopLoss * _Point , _Digits );
               tp = NormalizeDouble ( OrderOpenPrice () + ( OrderOpenPrice () - Low [ 1 ]) * takeProfit, Digits );
               if ( OrderModify ( OrderTicket (), OrderOpenPrice (), sl, tp, 0 )) return ;
            }
   if (type == OP_SELL )
       for ( int i = 0 ; i < OrdersTotal (); i++)
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
             if ( OrderSymbol () == _Symbol && OrderMagicNumber () == magic && OrderType () == OP_SELL && OrderStopLoss () == 0 )
            {
               sl = NormalizeDouble ( High [ 1 ] + stopLoss * _Point , _Digits );
               tp = NormalizeDouble ( OrderOpenPrice () - ( High [ 1 ] - OrderOpenPrice ()) * takeProfit, Digits );
               if ( OrderModify ( OrderTicket (), OrderOpenPrice (), sl, tp, 0 )) return ;
            }
}
//+-----------------------------------------------------------------------------------------------+
void FindPattern()   // Ищем большое расстояние между свечами
{
   if ( High [ 1 ] < High [ 2 ] && Bid > High [ 1 ] && Low [ 1 ] < Low [ 2 ])
   {
       double spacing = NormalizeDouble (( High [ 2 ] - High [ 1 ]) / _Point , 0 );
            
       if (maxSpacing >= spacing && minSpacing <= spacing)
         OpenOrder( OP_BUY );
   }
   if ( Low [ 1 ] > Low [ 2 ] && Bid < Low [ 1 ] && High [ 1 ] > High [ 2 ])
   {
       double spacing = NormalizeDouble (( Low [ 1 ] - Low [ 2 ]) / _Point , 0 );
            
       if (maxSpacing >= spacing && minSpacing <= spacing)
         OpenOrder( OP_SELL );
   }   
   {
       if (TrailingStop!= 0 ) TrailingStop();      
   }
}
//+-----------------------------------------------------------------------------------------------+
void TrailingStop()
{
   double StLo,OSL,OOP;
   bool error= true ;   
   for ( int i= 0 ; i< OrdersTotal (); i++) 
   {
       if ( OrderSelect (i, SELECT_BY_POS ))
      {
         tip = OrderType ();
         if (tip< 2 && OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic)
         {
            OSL   = NormalizeDouble ( OrderStopLoss (), Digits );
            OOP   = NormalizeDouble ( OrderOpenPrice (), Digits );
             if (tip== 0 )        
            {  
               StLo = NormalizeDouble ( Bid - TrailingStop* Point , Digits );
               if (StLo < OOP) continue ;
               if (StLo > OSL)
                  error= OrderModify ( OrderTicket (), OrderOpenPrice (),StLo, OrderTakeProfit (), 0 ,White);

            }                                         
             if (tip== 1 )    
            {                                         
               StLo = NormalizeDouble ( Ask + TrailingStop* Point , Digits );           
               if (StLo > OOP) continue ;
               if (StLo < OSL || OSL== 0 )
                  error= OrderModify ( OrderTicket (), OrderOpenPrice (),StLo, OrderTakeProfit (), 0 ,White);
            } 
             if (!error) Alert ( "Error TrailingStop " , GetLastError (), "   " , Symbol (), "   SL " ,StLo);
         }
      }
   }
}
//+-----------------------------------------------------------------------------------------------+


&quot;Danışman nasıl yerleştirilmelidir&quot; tablosunun fotoğrafı

Dosyalar:
 
Vladim1203 :

Herkese merhaba, lütfen danışmanın kodunda bir hata bulmama yardım edin, her şeyi inceledim, her şey kodda doğru yazılmış gibi görünüyor, ancak bir nedenden dolayı program doğru ticaret yapmıyor! Fikir şudur: EA aynı yönde iki uzun mum aramalıdır (mumlar arasındaki uzunluk EA'da düzenlenir, yani yöne bağlı olarak iki minimum veya maksimum mum arasında), fiyat kırılırsa Son mumun minimum veya maksimum ters yönde, bir anlaşma açılmalıdır (Dosyaya ekli çizelgede durumların örnek fotoğrafları). EA, bu tür her uygun durumda alım satım açmalıdır ve bir nedenden dolayı alım satımları yalnızca günler arasındaki alım satım pencerelerinde açar. Programcılar için zor olmayan durum budur, lütfen yardım edin, hatayı düzeltin. Aşağıdaki danışman koduna ve ekteki dosyaya bakın.

İlk önce danışmanın bir bölümünü, bulunan mumları grafikte işaretlemesi için yazmak daha iyidir - her şey netleşecektir. Ve sizin durumunuzda aşağıdaki satırlar gereksizdir:

 extern string paramEA    = "" ;     // Parameters EA

и

//+-----------------------------------------------------------------------------------------------+
int OnInit ()
{
   
   return ( INIT_SUCCEEDED );
}
//+-----------------------------------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   
}
//+-----------------------------------------------------------------------------------------------+
 
STARIJ :

Şimdi bize buradan nasıl kazanç elde edileceğini anlatın... Yoksa oyun mu kurmak gerekiyor?


Kâr henüz mevcut değil. Trend boyunca iki olası fiyat hedefini beş ana noktaya göre hesaplamak için bir algoritma var, ancak ücretli bir abonelikle özel bir sunucuda hesaplanıyor. Hedefleri kendim hesaplamak istiyorum, algoritma üzerindeki çalışmalar henüz bitmedi.

MQL4'te programınız nasıl görünecek?

 
Anton Yakovlev :
Eğer iyi bir stratejiniz varsa ve bunu paylaşmaya hazırsanız, bir danışman yazabilirim . Herkese açık veya özel mesajlarla tartışmaya davet ediyorum.

Anton, çözmeme yardım et, EA'ya takip eden durdurma işlevini ekledim, derledim ve iki hata veriyor. - Kafamı kırdım, baykuş yapmak için nasıl düzelteceğimi anlayamıyorum. Doğru, fiyat sırasıyla kanalın üst sınırına ve alt sınırına dokunduktan sonra işlemler eski stratejinin koşullarına göre kapatılır. Burada da bir şeylerin değişmesi gerektiğini anlıyorum. - DPR ordusunun adamlarına cevap verin.

#property telif hakkı "Telif Hakkı 2017, MetaQuotes Software Corp."

#özellik bağlantısı "https://www.mql5.com"

#özellik sürümü "1.00"

#mülkiyet katı


//------------------------------------------------ ---------

dış çift Lot = 0,01;

harici int TakeProfit = 600;

harici int StopLoss = 25;

harici int Sihir = 0001;

dış int kayma = 3;

harici int TralType = 0; // 0-SAR, 1-ATR, 2-HMA

harici çift SAR_Adım = 0.02;

harici çift SAR_Max = 0,2;

harici int ATR_Period = 14;

harici çift ATR_K = 2.0;

harici int HMA_Period = 16;

harici int HMA_Method = 3;

harici int HMA_Shift = 0;

tarihsaat LBT;

//------------------------------------------------ ---------

extern string TMA = "TMA göstergesinin parametreleri";

extern string TimeFrame = "geçerli zaman çerçevesi";

extern int HalfLength = 56;

extern int Fiyat = PRICE_CLOSE;

harici çift ATRMÇarpan = 2.0;

harici int ATRPeriyot = 100;

extern bool Interpolate = true;

//------------------------------------------------ ---------

çift FiyatYüksek, FiyatDüşük, SL, TP;

int bileti;


//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int OnInit()

{

if (Rakamlar == 3 || Basamaklar == 5)

{

Kâr Al *= 10;

StopLoss *= 10;

kayma *= 10;

}

dönüş(INIT_SUCCESSED);

}

//+------------------------------------------- --------------------+

//| Uzman başlatmasızlaştırma işlevi |

//+------------------------------------------- --------------------+

geçersiz OnDeinit(const int nedeni)

{


}

//+------------------------------------------- --------------------+

//| Uzman onay işlevi |

//+------------------------------------------- --------------------+

geçersiz OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

if(CountSell() == 0 && Teklif >= FiyatYüksek)

{

bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "TMA robotu", Magic, 0, Red);

eğer (bilet > 0)

{

SL = NormalizeDouble(Teklif + StopLoss*Puan, Rakamlar);

TP = NormalizeDouble(Teklif - TakeProfit*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("Satış emri değiştirme hatası !");

}

}

if (CountBuy() == 0 && Sor <= FiyatDüşük)

{

bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robotu", Magic, 0, Blue);

eğer (bilet > 0)

{

TP = NormalizeDouble(Sor + Kâr Al*Puan, Rakamlar);

SL = NormalizeDouble(Sor - Kaybı Durdur*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if(!OrderModify(bilet, OrderOpenPrice(), SL, TP, 0))

Print("Satın alma siparişi değiştirilirken hata oluştu!");

} else Print("Satın alma siparişi açılırken hata oluştu");

}

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int init()

{

//--------


//--------

dönüş(0);

}

//+------------------------------------------- --------------------+

//| Uzman onay işlevi |

//+------------------------------------------- --------------------+

geçersiz OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

if(CountSell() == 0 && Teklif >= FiyatYüksek)

{

bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "TMA robotu", Magic, 0, Red);

eğer (bilet > 0)

{

SL = NormalizeDouble(Teklif + StopLoss*Puan, Rakamlar);

TP = NormalizeDouble(Teklif - TakeProfit*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("Satış emri değiştirilirken hata oluştu!");

} else Print("Satış emri açılırken hata oluştu!");

}

if (CountBuy() == 0 && Sor <= FiyatDüşük)

{

bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robotu", Magic, 0, Blue);

eğer (bilet > 0)

{

TP = NormalizeDouble(Sor + Kâr Al*Puan, Rakamlar);

SL = NormalizeDouble(Sor - Kaybı Durdur*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if(!OrderModify(bilet, OrderOpenPrice(), SL, TP, 0))

Print("Satın alma siparişi değiştirilirken hata oluştu!");

} else Print("Satın alma siparişi açılırken hata oluştu");

}

if (<= FiyatDüşük && CountSell() > 0) sor

{

for (int i = OrdersTotal() -1; i>0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)

if (!OrderClose(OrderTicket(), OrderLots(), Sor, Kayma, Siyah))

Print("Satış emri kapatılırken hata oluştu!");

}

}

}

if (Teklif >= FiyatYüksek && CountBuy() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)

if(!OrderClose(OrderTicket(), OrderLots(), Teklif, Kayma, Siyah))

Print("Satın alma siparişi kapatılırken hata oluştu!");

}

}

}

}

//+------------------------------------------- --------------------+

int SaySat()

{

int sayı = 0;

for (int ticaret = OrdersTotal()-1; ticaret>=0; ticaret--)

{

if(Sipariş Seçimi(ticaret, SELECT_BY_POS, MODE_TRADES))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)

say++;

}

}

dönüş(sayım);

}//+---------------------------------------------- --------------------+

int CountBuy()

{

int sayı = 0;

for (int ticaret = OrdersTotal()-1; ticaret>=0; ticaret--)

{

if(Sipariş Seçimi(ticaret, SELECT_BY_POS, MODE_TRADES))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)

say++;

}

}

dönüş(sayım);

}

//+------------------------------------------- --------------------+

//| Uzman başlatmasızlaştırma işlevi |

//+------------------------------------------- --------------------+

int tanım()

{

//+-------


//+-------

dönüş(0);

}

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int Başlat()

{

//-----

bool hatası = yanlış;

if (LBT!=Zaman[0]) {

if (Sipariş Toplamı()!=0) {

for (int i=0; i<SiparişlerToplam(); i++) {

if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {

çift SL = OrderStopLoss();

if OrderType()==0) {

anahtar(TralType) {

durum 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

kırmak;

durum 1: SL = Yüksek[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,"",1,0,0);

kırmak;

}

if (SL<OrderStopLoss())

SL = OrderStopLoss();

}

if (OrderType()==1) {

anahtar(TralType) {

durum 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

kırmak;

durum 1: SL = Düşük[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,"",1,0,0);

kırmak;

}

if (SL>OrderStopLoss())

SL = OrderStopLoss();

}

if (SL!=OrderStopLoss()) {

if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))

hata=doğru;

}

}

}

}

eğer (!hata)

LBT = Zaman[0];

}

dönüş(0);

}

//+------------------------------------------- --------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
Andrey Luxe :

Bu alanda deneyim kazanmak için ilginç fikirleriniz ve stratejileriniz için ücretsiz 25 danışman yazacağım.

19 danışman kaldı


Andrey , çözmeme yardım et, EA'ya takip eden durdurma işlevini ekledim, derledim ve iki hata veriyor. - Kafamı kırdım, baykuş yapmak için nasıl düzelteceğimi anlayamıyorum. Doğru, fiyat sırasıyla kanalın üst sınırına ve alt sınırına dokunduktan sonra işlemler eski stratejinin koşullarına göre kapatılır. Burada da bir şeylerin değişmesi gerektiğini anlıyorum. - DPR ordusunun adamlarına cevap verin.

#property telif hakkı "Telif Hakkı 2017, MetaQuotes Software Corp."

#özellik bağlantısı "https://www.mql5.com"

#özellik sürümü "1.00"

#mülkiyet katı


//------------------------------------------------ ---------

dış çift Lot = 0,01;

harici int TakeProfit = 600;

harici int StopLoss = 25;

harici int Sihir = 0001;

dış int kayma = 3;

harici int TralType = 0; // 0-SAR, 1-ATR, 2-HMA

harici çift SAR_Adım = 0.02;

harici çift SAR_Max = 0,2;

harici int ATR_Period = 14;

harici çift ATR_K = 2.0;

harici int HMA_Period = 16;

harici int HMA_Method = 3;

harici int HMA_Shift = 0;

tarihsaat LBT;

//------------------------------------------------ ---------

extern string TMA = "TMA göstergesinin parametreleri";

extern string TimeFrame = "geçerli zaman çerçevesi";

extern int HalfLength = 56;

extern int Fiyat = PRICE_CLOSE;

harici çift ATRMÇarpan = 2.0;

harici int ATRPeriyot = 100;

extern bool Interpolate = true;

//------------------------------------------------ ---------

çift FiyatYüksek, FiyatDüşük, SL, TP;

int bileti;


//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int OnInit()

{

if (Rakamlar == 3 || Basamaklar == 5)

{

Kâr Al *= 10;

StopLoss *= 10;

kayma *= 10;

}

dönüş(INIT_SUCCESSED);

}

//+------------------------------------------- --------------------+

//| Uzman başlatmasızlaştırma işlevi |

//+------------------------------------------- --------------------+

geçersiz OnDeinit(const int nedeni)

{


}

//+------------------------------------------- --------------------+

//| Uzman onay işlevi |

//+------------------------------------------- --------------------+

geçersiz OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 2, 0);

if(CountSell() == 0 && Teklif >= FiyatYüksek)

{

bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "TMA robotu", Magic, 0, Red);

eğer (bilet > 0)

{

SL = NormalizeDouble(Teklif + StopLoss*Puan, Rakamlar);

TP = NormalizeDouble(Teklif - TakeProfit*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("Satış emri değiştirme hatası !");

}

}

if (CountBuy() == 0 && Sor <= FiyatDüşük)

{

bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robotu", Magic, 0, Blue);

eğer (bilet > 0)

{

TP = NormalizeDouble(Sor + Kâr Al*Puan, Rakamlar);

SL = NormalizeDouble(Sor - Kaybı Durdur*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if(!OrderModify(bilet, OrderOpenPrice(), SL, TP, 0))

Print("Satın alma siparişi değiştirilirken hata oluştu!");

} else Print("Satın alma siparişi açılırken hata oluştu");

}

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int init()

{

//--------


//--------

dönüş(0);

}

//+------------------------------------------- --------------------+

//| Uzman onay işlevi |

//+------------------------------------------- --------------------+

geçersiz OnTick()

{

PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 1, 0);

PriceLow = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, 2, 0);

if(CountSell() == 0 && Teklif >= FiyatYüksek)

{

bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, "TMA robotu", Magic, 0, Red);

eğer (bilet > 0)

{

SL = NormalizeDouble(Teklif + StopLoss*Puan, Rakamlar);

TP = NormalizeDouble(Teklif - TakeProfit*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if (!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0))

Print("Satış emri değiştirilirken hata oluştu!");

} else Print("Satış emri açılırken hata oluştu!");

}

if (CountBuy() == 0 && Sor <= FiyatDüşük)

{

bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "TMA robotu", Magic, 0, Blue);

eğer (bilet > 0)

{

TP = NormalizeDouble(Sor + Kâr Al*Puan, Rakamlar);

SL = NormalizeDouble(Sor - Kaybı Durdur*Puan, Rakamlar);

if (OrderSelect(bilet, SELECT_BY_TICKET))

if(!OrderModify(bilet, OrderOpenPrice(), SL, TP, 0))

Print("Satın alma siparişi değiştirilirken hata oluştu!");

} else Print("Satın alma siparişi açılırken hata oluştu");

}

if (<= FiyatDüşük && CountSell() > 0) sor

{

for (int i = OrdersTotal() -1; i>0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && OrderType() == OP_SELL)

if (!OrderClose(OrderTicket(), OrderLots(), Sor, Kayma, Siyah))

Print("Satış emri kapatılırken hata oluştu!");

}

}

}

if (Teklif >= FiyatYüksek && CountBuy() > 0)

{

for (int i = OrdersTotal() -1; i>0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderMagicNumber() == Magic && OrderType() == OP_BUY)

if(!OrderClose(OrderTicket(), OrderLots(), Teklif, Kayma, Siyah))

Print("Satın alma siparişi kapatılırken hata oluştu!");

}

}

}

}

//+------------------------------------------- --------------------+

int SaySat()

{

int sayı = 0;

for (int ticaret = OrdersTotal()-1; ticaret>=0; ticaret--)

{

if(Sipariş Seçimi(ticaret, SELECT_BY_POS, MODE_TRADES))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)

say++;

}

}

dönüş(sayım);

}//+---------------------------------------------- --------------------+

int CountBuy()

{

int sayı = 0;

for (int ticaret = OrdersTotal()-1; ticaret>=0; ticaret--)

{

if(Sipariş Seçimi(ticaret, SELECT_BY_POS, MODE_TRADES))

{

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)

say++;

}

}

dönüş(sayım);

}

//+------------------------------------------- --------------------+

//| Uzman başlatmasızlaştırma işlevi |

//+------------------------------------------- --------------------+

int tanım()

{

//+-------


//+-------

dönüş(0);

}

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int Başlat()

{

//-----

bool hatası = yanlış;

if (LBT!=Zaman[0]) {

if (Sipariş Toplamı()!=0) {

for (int i=0; i<SiparişlerToplam(); i++) {

if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {

çift SL = OrderStopLoss();

if OrderType()==0) {

anahtar(TralType) {

durum 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

kırmak;

durum 1: SL = Yüksek[1] - iATR(NULL,0,ATR,Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,"",1,0,0);

kırmak;

}

if (SL<OrderStopLoss())

SL = OrderStopLoss();

}

if (OrderType()==1) {

anahtar(TralType) {

durum 0: SL = iSAR(NULL,0,SAR_Step,SAR_Max,0);

kırmak;

durum 1: SL = Düşük[1] + iATR(NULL,0,ATR,Period,1)*ATR_K;

kırmak;

durum 2: SL = iCustom(NULL,0,"VininI_HMAsound&amp",HMA_Period,HMA_Method,3,HMA_Shift, fals,fals,"",1,0,0);

kırmak;

}

if (SL>OrderStopLoss())

SL = OrderStopLoss();

}

if (SL!=OrderStopLoss()) {

if(!OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0))

hata=doğru;

}

}

}

}

eğer (!hata)

LBT = Zaman[0];

}

dönüş(0);

}

//+------------------------------------------- --------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
Выберите подходящую торговую стратегию и оформите подписку на нее в пару кликов. Все Сигналы сопровождаются подробной статистикой и графиками. Станьте Поставщиком торговых сигналов и продавайте подписку тысячам трейдеров по всему миру. Наш сервис позволит вам хорошо зарабатывать на прибыльной стратегии даже при небольшом стартовом капитале...
 
vkravtzov :

Andrey , anlamama yardım et, EA'ya takip eden durdurma işlevini ekledim, derledim ve iki hata veriyor. - Kafamı kırdım, baykuş yapmak için nasıl düzelteceğimi anlayamıyorum. Doğru, fiyat sırasıyla kanalın üst sınırına ve alt sınırına dokunduktan sonra işlemler eski stratejinin koşullarına göre kapatılır. Burada da bir şeylerin değişmesi gerektiğini anlıyorum. - DPR ordusunun adamlarına cevap verin.


Spam Gönderme
 
Victor Nikolaev :
Spam Gönderme

Yanlış bir şey yaptıysam özür dilerim. Doğru, nasıl spam attığımı anlamadım ... Bence iki yoldaşa iki mesaj gönderdim. Yoksa bu mümkün değil mi? - Suçlu.

Neden: