Bir programcıya NASIL %100 ilgi gösterilir, FİKİRİNİZE göre bir danışman yazın - sayfa 11

 

Veya bu EA için ayarlanabilir bir kâr al ayarı düzenleyin.

işte tam kod.

 
//+------------------------------------------------------------------+
//|                                                         Gray.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
extern double lot=1;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int tiket=0;
//----
if (iVolume(NULL,0,0)==1){
    Print("WATR1="+iCustom( NULL, 0, "WATR", 0, 0) );
    Print("WATR2="+iCustom( NULL, 0, "WATR", 1, 0) );
    
    if (iCustom( NULL, 0, "WATR", 0, 2)<1000 && iCustom( NULL, 0, "WATR", 1, 1)<1000) {tiket =OrderSend(Symbol(),OP_SELL,lot,Bid,3,iCustom( NULL, 0, "WATR", 1, 0),0,NULL,16384,0,Red);}
    if (iCustom( NULL, 0, "WATR", 1, 2)<1000 && iCustom( NULL, 0, "WATR", 0, 1)<1000) {tiket= OrderSend(Symbol(),OP_BUY,lot,Ask,3, iCustom( NULL, 0, "WATR", 0, 0),0,NULL,16384,0,Green);}
    CheckOrders();
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
}
void CheckOrders(){
int pos=0;
int total=OrdersTotal();
for (pos=0;pos<total;pos++) {
if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true){ 
if (OrderType()==OP_BUY && OrderStopLoss()<iCustom( NULL, 0, "WATR", 0, 1))OrderModify(OrderTicket(),OrderOpenPrice(),iCustom( NULL, 0, "WATR", 0, 1),OrderTakeProfit(),0,Green);
if (OrderType()==OP_SELL && OrderStopLoss()>iCustom( NULL, 0, "WATR", 1, 1))OrderModify(OrderTicket(),OrderOpenPrice(),iCustom( NULL, 0, "WATR", 1, 1),OrderTakeProfit(),0,Red);
                                                                                   }
                                                          }
                                      }
 
Ultramarin :

Veya bu EA için ayarlanabilir bir kâr al ayarı düzenleyin.

işte tam kod.

Çalışmayı denemedin mi?
 
Registr :
Ultramarin :

Veya bu EA için ayarlanabilir bir kâr al ayarı düzenleyin.

işte tam kod.

Çalışmayı denemedin mi?
Bu tam EA koduysa, Tescil size en iyi tavsiyeyi vermiştir.
 

birkaç yorum ekleyebilirim

1. Start işlevine ait return (0) ifadesi en az bir küme parantezinin altında çoğaltılmalıdır. T.K. şimdi yalnızca 1'e eşit hacim koşulu tetiklenirse çalışır

zamanın geri kalanında, başlatma işlevi olduğu gibi doğru şekilde kapanmamalıdır.

Çağrılan gösterge <1000'den gelen değer için 2 koşul, bu muhtemelen çubuktaki arabelleklerden tek bir değer olmadığını göstermek anlamına geliyordu.

yani, olduğu gibi, bir kesişme (göstergenin renginde ve mevcut fiyata göre göreceli konumunda bir değişiklik)

Korkarım bu versiyonda sadece mevcut fiyat değeri 1000'den fazla olan enstrümanlarda çalışacak (örneğin, DOW)

göstergenin geçerli çubukta yalnızca bir renk çizmesi koşuluyla (bu çubuktaki başka bir arabellek değeri 0'dır)

aksi takdirde, hemen hemen her döviz çiftinde, göstergenin mevcut değeri her zaman 1000'den az olacak ve koşullar her çubukta tetiklenecektir.

3. Yeni bir çubuğun ortaya çıkması için koşulu aşağıdaki gibi almanızı öneririm.


 int time ;
 
int start
   {
      if ( time != Time [ 1 ])
         {
            // расчет индикатора и выполение действий с ордерами
            //-----
            //-----
            //-----
            //-----
            time = Time [ 1 ] ;
 
         }
       return ( 0 ) ;
   }



 
olyakish :

birkaç yorum ekleyebilirim

1. Start işlevine ait return(0) ifadesi en azından bir küme ayracı altında çoğaltılmalıdır. T.K. şimdi yalnızca 1'e eşit hacim koşulu tetiklenirse çalışır

zamanın geri kalanında, başlatma işlevi olduğu gibi doğru şekilde kapanmamalıdır.

Çağrılan gösterge <1000'den gelen değer için 2 koşul, bu muhtemelen çubuktaki arabelleklerden tek bir değer olmadığını göstermek anlamına geliyordu.

yani, olduğu gibi, bir kesişme (göstergenin renginde ve mevcut fiyata göre göreceli konumunda bir değişiklik)

Korkarım bu versiyonda sadece mevcut fiyat değeri 1000'den fazla olan enstrümanlarda çalışacak (örneğin, DOW)

göstergenin geçerli çubukta yalnızca bir renk çizmesi koşuluyla (bu çubuktaki başka bir arabellek değeri 0'dır)

aksi takdirde, hemen hemen her döviz çiftinde, göstergenin mevcut değeri her zaman 1000'den az olacaktır ve koşullar her çubukta tetiklenecektir.

3. Yeni bir çubuğun ortaya çıkması için koşulu aşağıdaki gibi almanızı öneririm.


Hangi tuşlara basacağını ona açıklasan iyi olur.. :)
 

Evet, işte başka bir şey

4. Özel bir göstergeyi 12 kez çağırmak en azından küfürdür :)

senin durumunda 6 kez yeterli olacak (sadece o kadar saydım)

Uzman Danışmanınızın işlem hızı artacak, iyi, 2 kat değil, ancak 1.5'te sadece bu eylemlerden (kod optimizasyonu), parametre optimizasyonu ile karıştırılmaması gerektiğini düşünüyorum.


 //+------------------------------------------------------------------+
//|                                                         Gray.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//|                                   обработал напильником olyakish |
//+------------------------------------------------------------------+
#property copyright " Copyright © 2007, MetaQuotes Software Corp. "
#property link      " https://www.metaquotes.net "
 
extern double lot = 1 ;
extern string rem01 ="Профит в пунктах от текущей цены";
extern int TP = 100 ;
 
int time ;
double WATR [ 2 , 3 ] ; // первое измерение - индекс буфера; второе измерение - индекс бара 
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ()
  {
   int tiket = 0 ;
 
   if ( Time [ 1 ] != time )
      {
         WATR [ 0 , 0 ] = iCustom ( NULL , 0 , " WATR " , 0 , 0 ) ;
         WATR [ 1 , 0 ] = iCustom ( NULL , 0 , " WATR " , 1 , 0 ) ;
         WATR [ 0 , 1 ] = iCustom ( NULL , 0 , " WATR " , 0 , 1 ) ;
         WATR [ 1 , 1 ] = iCustom ( NULL , 0 , " WATR " , 1 , 1 ) ;
         WATR [ 0 , 2 ] = iCustom ( NULL , 0 , " WATR " , 0 , 2 ) ;
         WATR [ 1 , 2 ] = iCustom ( NULL , 0 , " WATR " , 1 , 2 ) ;         
         Print ( " WATR1= " , WATR [ 0 , 0 ]) ;
         Print ( " WATR2= " , WATR [ 1 , 0 ]) ;
    
         if ( WATR [ 0 , 2 ] > 0 && WATR [ 1 , 1 ] > 0 ) // проверить это место (правильно ли будет направелние  открытия по индикатору)
            {
               tiket = OrderSend ( Symbol () , OP_BUY , lot , Ask , 3 , WATR [ 0 , 0 ] , Bid + TP * Point , NULL , 16384 , 0 , Green ) ;
            }
         if ( WATR [ 1 , 2 ] > 0 && WATR [ 0 , 1 ] > 0 ) // проверить это место (правильно ли будет направелние  открытия по индикатору)
            {
               tiket = OrderSend ( Symbol () , OP_SELL , lot , Bid , 3 , WATR [ 1 , 0 ] , Ask - TP * Point , NULL , 16384 , 0 , Red ) ;                           
            }
         CheckOrders () ;
         time = Time [ 1 ] ;
      }
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
void CheckOrders ()
   {
      int pos = 0 ;
      int total = OrdersTotal () ;
      for ( pos = 0 ; pos < total ; pos ++ ) 
         {
            if ( OrderSelect ( pos , SELECT_BY_POS , MODE_TRADES ) == true )
               { 
                  if ( OrderType () == OP_BUY && OrderStopLoss () < WATR [ 0 , 1 ]){ OrderModify ( OrderTicket () , OrderOpenPrice () , WATR [ 0 , 1 ] , OrderTakeProfit () , 0 , Green ) ; }
                  if ( OrderType () == OP_SELL && OrderStopLoss () > WATR [ 1 , 1 ]){ OrderModify ( OrderTicket () , OrderOpenPrice () , WATR [ 1 , 1 ] , OrderTakeProfit () , 0 , Red ) ; }
               }
         }
      return ( 0 ) ;  // на самом деле нужно просто return но так вроде писать нельзя ...
    }
//+------------------------------------------------------------------+

Yine de

Kontrol etmek



 
maalesef çalışmıyor
 

biri açıklayabilir mi

Kesinlikle aynı parametrelere sahip iki özdeş Uzman Danışman vardır

Biri alıyor diğeri satıyor

giriş ve çıkış saatleri aynı

İkisi nasıl temiz bir şekilde birleşebilir?

 
Ultramarin :

İkisi nasıl temiz bir şekilde birleşebilir?

Yayılarak