Belirli bir süre ve/veya SL'den sonra siparişi otomatik olarak kapat - sayfa 2

 
buna alışırsın merak etme
 
nirvanamac :


Evet tabii ki anlıyorum... EA'larım için köle sahibi olmak istemiyorum... bilmem gereken tek şey, bir programın nasıl çalıştığını nasıl anlayacağım...

SMA Cross gibi basit bir EA'nız varsa...bu büyük bir sorun değil...ama ne kadar çok başarmak isterseniz o kadar zorlaşır...(en azından benim için)


 //-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+
if ( OrdersTotal ()> 0 ){
   for ( int i= 1 ; i<= OrdersTotal (); i++)           // Cycle searching in orders
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // If the next is available
        {
           if ( OrderMagicNumber ()==BuyMagicNumber) { int halt1= 1 ;}
           if ( OrderMagicNumber ()==SellMagicNumber) { int halt2= 1 ;}
        }
     }
}

Kullandığınız kodun çoğu bu https://www.mql5.com/en/code adresinden görünüyor.

Size göre yaparken kullandığınız yukarıdaki program satırları nelerdir ??

 
nirvanamac :
Sanırım delik kodunu mu kastediyorsun yoksa?
tekrarlıyorum
sadece kodlamanız gerekiyor. OrderClose() ve zaman testiniz nerede?
nirvanamak :
Benim sorunum, kodu şu anki koduma doldurmak ...:
Burada Köle yok, kod yazmayı veya birine ödeme yapmayı öğrenin . Bunu sizin için kodlamayacağız. Size YARDIM etmeye hazırız.
 

Merhabalar, sanırım doğru yolu buldum ama yine de yanlış. Acually kod şöyle görünür:

 //+------------------------------------------------------------------+
//|                                            Der Stundentrader.mq4 |
//|                                                         Der Marc |
//|                                  Es gibt gar keine Internetseite |
//+------------------------------------------------------------------+
#property copyright "Der Marc"
#property link       "Es gibt gar keine Internetseite"

//Wichtige Variablen
extern double     Lots= 0.01 ;
extern int        Slippage= 5 ;
extern int MagicNumber = 1 ;
extern int   TradeHour3= 3 ;
extern int   TradeHour4= 4 ;
extern int   TradeHour7= 7 ;
extern int   TradeHour10= 10 ;
extern int   TradeHour17= 17 ;
extern int   TradeHour18= 18 ;
extern int   TradeHour20= 20 ;
extern int   TradeHour12= 12 ;
extern int   TradeHour23= 23 ;

//Globale Variablen
int BuyTicket;
int SellTicket;
double UsePoint;
int UseSlippage;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   UsePoint = PipPoint( Symbol ());
   UseSlippage = GetSlippage( Symbol (), Slippage);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
// Buy criteria
OrderSelect (SellTicket || BuyTicket, SELECT_BY_TICKET);
       //Close Order
       if ( OrderCloseTime () == 0 && SellTicket > 0 || BuyTicket > 0 )
         {
           double CloseLots = OrderLots ();
           double ClosePrice = Ask;
           bool Closed = OrderClose (SellTicket ,CloseLots, ClosePrice, UseSlippage, Red );
         }
         double OpenPrice = Ask;
//BuyOrder         
if ((TradeHour3== Hour ())||(TradeHour4== Hour ())||(TradeHour7== Hour ())||(TradeHour10== Hour ())||(TradeHour17== Hour ())||(TradeHour18== Hour ())||(TradeHour20== Hour ())) //Signal Buy
 {
   int openbuy= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "time trader buy order " ,MagicNumber, 0 , Blue );
    }
SellTicket = 0 ; 
BuyTicket = 0 ;
 
// Sell criteria
OrderSelect (BuyTicket || SellTicket, SELECT_BY_TICKET);
       //Close Order
       if ( OrderCloseTime () == 0 && BuyTicket > 0 || BuyTicket > 0 )
      {
       CloseLots = OrderLots ();
       ClosePrice = Bid;
       Closed = OrderClose (BuyTicket, CloseLots, ClosePrice, UseSlippage, Red );
      }
               OpenPrice = Bid;
 //SellOrder
 if ((TradeHour12== Hour ())||(TradeHour23== Hour ())) //Signal Sell
 {
   int opensell= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "time trader sell order " ,MagicNumber, 0 , Green );
    }  
SellTicket = 0 ;
BuyTicket = 0 ; 
 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//Pip Point Function
   double PipPoint ( string Currency)
  {
   int CalcDigits = MarketInfo (Currency, MODE_DIGITS);
   if (CalcDigits == 2 || CalcDigits == 3 ) double CalcPoint = 0.01 ;
   else if (CalcDigits == 4 || CalcDigits == 5 ) CalcPoint = 0.0001 ;
   return (CalcPoint);
  }

//Get Slippage Function
int GetSlippage( string Currency, int SlippagePips)
 {
   int CalcDigits = MarketInfo (Currency, MODE_DIGITS);
   if (CalcDigits == 2 || CalcDigits == 3 ) double CalcSlippage = SlippagePips;
   else if (CalcDigits == 4 || CalcDigits == 5 ) CalcSlippage = SlippagePips * 10 ;
   return (CalcSlippage);
  }

EA'mın açıldıktan sonra tüm Siparişleri kapatması sorunum var. Gördüğünüz gibi tüm Buy & SellTickets için OrderClosetime'ı doldurdum. EA'ya 1 saat sonra kapatılması gerektiğini söyleyecek işlevi bulamıyorum...

 
nirvanamac :


Evet tabii ki anlıyorum... EA'larım için köle sahibi olmak istemiyorum... bilmem gereken tek şey, bir programın nasıl çalıştığını nasıl anlayacağım...

SMA Cross gibi basit bir EA'nız varsa...bu büyük bir sorun değil...ama ne kadar çok başarmak isterseniz o kadar zorlaşır...(en azından benim için)

Şu anki EA'm oldukça basit. . . İçinde 2000'den fazla kod satırı var. . . Bunların çoğunun yöntemle ilgisi yok, ancak yazacağım herhangi bir EA'da olması gereken temizlik ve standart işlevler . . . pozisyon boyutlarını hesaplama, sipariş verme, siparişleri sayma, TP veya SL'ye ulaştıklarında kapanan siparişleri kontrol etme, hata raporlama, vb. . . Yazarak, test ederek, değiştirerek, test ederek aylarca harcadım. . . benim kodum.
 
RaptorUK :
Şu anki EA'm oldukça basit. . . İçinde 2000'den fazla kod satırı var. . . Bunların çoğunun yöntemle ilgisi yok, ancak yazacağım herhangi bir EA'da olması gereken temizlik ve standart işlevler. . . pozisyon boyutlarını hesaplama, sipariş verme, siparişleri sayma, TP veya SL'ye ulaştıklarında kapanan siparişleri kontrol etme, hata raporlama, vb. . . Aylarca yazarak, test ederek, değiştirerek, test ederek geçirdim. . . benim kodum.


buraya mı yükledin

 
nirvanamac :


buraya mı yükledin

Hayır, bunu neden yapayım?
 
Kodum (ticaret mantığı olmadan) 1500 satırdan fazla kod ve onu yükledim.
 

birlikte merhaba,

Programlama ile birkaç gün geçirdikten ve diğer EA'lara göz attıktan sonra, şu anki sonucu alabilirsiniz:

 //+------------------------------------------------------------------+
//|                                            Der Stundentrader.mq4 |
//|                                                         Der Marc |
//|                                  Es gibt gar keine Internetseite |
//+------------------------------------------------------------------+
#property copyright "Der Marc"
#property link       "Es gibt gar keine Internetseite"

//Wichtige Variablen
extern double     Minlot= 0.01 ;
extern int        Digits2Round= 2 ;
extern int        PercentOfFreeDepo= 1 ;
extern int        Slippage= 5 ;
extern int        MagicNumber = 1 ;
extern int        TradeHour3= 3 ;
extern int        TradeHour4= 4 ;
extern int        TradeHour7= 7 ;
extern int        TradeHour10= 10 ;
extern int        TradeHour17= 17 ;
extern int        TradeHour18= 18 ;
extern int        TradeHour20= 20 ;
extern int        TradeHour12= 12 ;
extern int        TradeHour23= 23 ;
extern int        StopLoss= 40 ;

//Globale Variablen
int BuyTicket;
int SellTicket;
double UsePoint;
int UseSlippage;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   UsePoint = PipPoint( Symbol ());
   UseSlippage = GetSlippage( Symbol (), Slippage);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   double FreeDepo= NormalizeDouble ( AccountBalance ()- AccountMargin (),Digits2Round);
   double Risk= NormalizeDouble ((FreeDepo*PercentOfFreeDepo/ 100 ),Digits2Round);
   double Lot= NormalizeDouble (Risk/(StopLoss/ 0.0001 )* 0.1 ,Digits2Round);
//===================== Lets determine lot size and risk ===================================
if ( Lot<Minlot )
 {
   Lot=Minlot;
 }
Comment ( "\n" , "Acceptable risk is " ,PercentOfFreeDepo, "% = " ,Risk, " of the free money " ,FreeDepo, " in lots = " ,Lot);
// Buy criteria
OrderSelect (SellTicket || BuyTicket, SELECT_BY_TICKET);
       //Close Order
       if (( OrderOpenTime ()+ 3600 ) > TimeCurrent () && SellTicket > 0 || BuyTicket > 0 )
         {
           double CloseLots = OrderLots ();
           double ClosePrice = Ask;
           bool Closed = OrderClose (SellTicket ,CloseLots, ClosePrice, UseSlippage, Red );
         }
         double OpenPrice = Ask;
//BuyOrder         
if ((TradeHour3== Hour ())||(TradeHour4== Hour ())||(TradeHour7== Hour ())||(TradeHour10== Hour ())||(TradeHour17== Hour ())||(TradeHour18== Hour ())||(TradeHour20== Hour ())) //Signal Buy
 {
   int openbuy= OrderSend ( Symbol (),OP_BUY,Lot,Ask,Slippage,StopLoss, 0 , "time trader buy order " ,MagicNumber, 0 , Blue );
    }
SellTicket = 0 ; 
BuyTicket = 0 ;
 // Sell criteria
OrderSelect (BuyTicket || SellTicket, SELECT_BY_TICKET);
       //Close Order
       if (( OrderOpenTime ()+ 3600 ) > TimeCurrent () && SellTicket > 0 || BuyTicket > 0 )
      {
       CloseLots = OrderLots ();
       ClosePrice = Bid;
       Closed = OrderClose (BuyTicket, CloseLots, ClosePrice, UseSlippage, Red );
      }
               OpenPrice = Bid;
 //SellOrder
 if ((TradeHour12== Hour ())||(TradeHour23== Hour ())) //Signal Sell
 {
   int opensell= OrderSend ( Symbol (),OP_SELL,Lot,Bid,Slippage,StopLoss, 0 , "time trader sell order " ,MagicNumber, 0 , Green );
    }  
SellTicket = 0 ;
BuyTicket = 0 ; 
 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//Pip Point Function
   double PipPoint ( string Currency)
  {
   int CalcDigits = MarketInfo (Currency, MODE_DIGITS);
   if (CalcDigits == 2 || CalcDigits == 3 ) double CalcPoint = 0.01 ;
   else if (CalcDigits == 4 || CalcDigits == 5 ) CalcPoint = 0.0001 ;
   return (CalcPoint);
  }

//Get Slippage Function
int GetSlippage( string Currency, int SlippagePips)
 {
   int CalcDigits = MarketInfo (Currency, MODE_DIGITS);
   if (CalcDigits == 2 || CalcDigits == 4 ) double CalcSlippage = SlippagePips;
   else if (CalcDigits == 3 || CalcDigits == 5 ) CalcSlippage = SlippagePips * 10 ;
   return (CalcSlippage);
  }

Şimdi 1'den fazla sipariş açıldığı için bir sorunum var. Ayrıca "130" hata mesajını alıyorum...