[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 84

 
NameLess :


koda baktı, beyni kırdı))) işini anlamak için başka birinin kodunu karıştırmak için nankör bir görev. Bu danışmana güveniyorsanız, her şeyin yolunda gitmesi için size başarılar dilerim)

Şahsen ben bir bisiklet icat ettim ve sıfırdan kendi kodumu yazdım ama nerede ve nasıl çalıştığını, neden çalışmadığını ve nerede hata araması gerektiğini biliyorum)

neyse böyle bir şey)


Teşekkür ederim. Zaten doğru yoldayım!))) Kazmak zorunda kaldım, ama istediğimi uyguladım (her durumda, bir şekilde işe yarıyor :)))).
 
NameLess :
Sipariş sayısını nasıl kontrol edeceğinizi biliyor musunuz? Katılıyorum, soru muhtemelen gizli bir gülümsemeye neden oluyor, bazen kahkahalara dönüşüyor.))) Ama bir haftalığına mt kodlarını kazmaya başladım. Ben de tüm kelimeleri bilmiyorum))) Akıllı))
 
nemo811 :
Sipariş sayısını nasıl kontrol edeceğinizi biliyor musunuz? Katılıyorum, soru muhtemelen gizli bir gülümsemeye neden oluyor, bazen kahkahalara dönüşüyor.))) Ama bir haftalığına mt kodlarını kazmaya başladım. Ben de tüm kelimeleri bilmiyorum))) Akıllı))


kendime uzman diyemem

soru pek net değil, sayıyı kontrol etmek ne demek? eğer belirli koşullar altında 2 kez bir sipariş açmanız gerekiyorsa, bu koşulu oluşturmanız gerekir.

Genel olarak konuşursak, programımı yaklaşık yarım yıl önce yazmaya başladım ve basit bir ayrıntı bana yardımcı oldu: Danışmanın ne yapmasını istediğinizi veya belirli bir kod parçasını düşünün. Neyi takip etmesi gerektiğini mantıklı düşün, kağıda bir plan yaz. ve fikri adım adım uygulayın.

bu durumda örnek vermek daha kolay olacak, o zaman çözümü biliyorsam ne ve nasıl yapacağımı daha spesifik olarak söyleyebilirim :)

 

örnek sayfa 83, sergeev'in görevi

Kod çalıştı - teşekkür ederim. Ancak deneyimli insanlar böyle sözler söylediğinde ister istemez düşünebilirsiniz: Sorun ne?

)))

 
nemo811 :

örnek sayfa 83, sergeev'in görevi

Kod çalıştı - teşekkür ederim. Ancak deneyimli insanlar böyle sözler söylediğinde ister istemez düşünebilirsiniz: Sorun ne?

)))


kod amaçlananı yaparsa, o zaman her şey böyle)) görünüşe göre böyle bir kodun durmadan sipariş açabileceği anlamına geliyordu, ancak biz öyle yaptık ki her şey bir kerede açılıp ertelendi. tüm yol anlamına gelir)
 
NameLess :

kod amaçlananı yaparsa, o zaman her şey böyle)) görünüşe göre böyle bir kodun durmadan sipariş açabileceği anlamına geliyordu, ancak biz öyle yaptık ki her şey bir kerede açılıp ertelendi. tüm yol anlamına gelir)

İyi. Tekrar teşekkürler.
 
nemo811 :

bu arada. f-ii başlangıcının başında, şöyle bir şey girmenizi öneririm

if ( OrdersTotal()!=0)

{

BUY = false;

BUY_STOP = false;

BUY_LIMIT = false;

SELL = false;

SELL_STOP = false;

SELL_LIMIT = false;

}

Bu, açık pozisyonlar olması durumunda korumadır, aniden müşteriyi yeniden başlatmanız gerekir. aksi takdirde tüm sipariş grubunu yeniden açacaktır.

ayrıca genel tavsiye: her satırda mantıklı düşünün - çalışmasına ne engel olabilir. danışmanımda bilgisayardaki tuğla düşerse mevcut bir arıza olabilir.

 
nemo811 :

İşte şu anda üzerinde çalıştığım şeyin biraz eskimiş bir versiyonu. Yazar drknn onu yaymasına izin verdi.


Sadece yüklememe izin vermedi, aynı zamanda kodu istediğiniz gibi değiştirme, satma ve hatta herhangi birine telif hakkı verme izni verdi :)

Sadece oradaki haklardan dolayı kavga yok :)

 
sergeev :
gösterge aracılığıyla https://docs.mql4.com/en/indicators/iBandsOnArray
teşekkür etmek!
 
NameLess :

bu arada. f-ii başlangıcının başında, şöyle bir şey girmenizi öneririm

if ( OrdersTotal()!=0)

{

BUY = false;

....

Bu, açık pozisyonlar olması durumunda korumadır, aniden müşteriyi yeniden başlatmanız gerekir. aksi takdirde tüm sipariş grubunu yeniden açacaktır.

Teşekkürler - önemli not. Bu sorunu çözerken aynı zamanda siparişlerin sayımını da çözdüm - sayaçlar ekledim (teşekkürler sergeev ).

Şimdi kod şuna benziyor (terminali yeniden başlatırken çok fazla açılmıyor):

 //--------------------------------------------------------------------
extern int      MAGIC       = 0 ;         //уникальный номер ордера
extern bool     BUY         = false;     //открыть ордер BUY
extern bool     BUY_STOP    = false;     //поставить ордер BUY STOP
extern bool     BUY_LIMIT   = false;     //поставить ордер BUY LIMIT
extern bool     SELL        = false;     //открыть ордер SELL
extern bool     SELL_STOP   = false;     //поставить ордер SELL STOP
extern bool     SELL_LIMIT  = false;     //поставить ордер SELL LIMIT
extern double   Lot         = 0.1 ;       //объем ордера
extern int      takeprofit  = 0 ;         //уровень выставления TP, если 0, то TP не выставляется
extern int      stoploss    = 0 ;         //уровень выставления SL, если 0, то SL не выставляется
extern int      DistanceSet = 40 ;       //расстояние от рынка для отложенника
extern int      Proskalz    = 3 ;         //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy" );
      BUY=false;
   }
   if (SELL)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell" );
      SELL=false;
   }
   if (BUY_STOP)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask + DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Stop" );
      BUY_STOP=false;
   }
   if (SELL_STOP)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid - DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Stop" );
      SELL_STOP=false;
   }
   if (BUY_LIMIT)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask - DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Limit" );
      BUY_LIMIT=false; 
   }
   if (SELL_LIMIT)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid + DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Limit" );
      SELL_LIMIT=false;
   }
return ( 0 );
}
void OPENORDER( string ord)
{
   int SchBuy=SchBuy_b(MAGIC);
   int SchSell=SchSell_b(MAGIC);
   int SchBuyStop=SchBuyStop_b(MAGIC);
   int SchSellStop=SchSellStop_b(MAGIC);
   int SchBuyLimit=SchBuyLimit_b(MAGIC);
   int SchSellLimit=SchSellLimit_b(MAGIC);
   int ticket = - 1 ;
   int err;
   while (ticket< 0 )
   {
       if (SchBuy< 1 ) { if (ord== "Buy" ) ticket= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}
       if (SchSell< 1 ) { if (ord== "Sell" ) ticket= OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}
       if (SchBuyStop< 1 ) { if (ord== "Buy Stop" ) ticket= OrderSend ( Symbol (),OP_BUYSTOP, Lot, NormalizeDouble (Ask + DistanceSet* Point , Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}
       if (SchSellStop< 1 ) { if (ord== "Sell Stop" ) ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lot, NormalizeDouble (Bid - DistanceSet* Point , Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}
       if (SchBuyLimit< 1 ) { if (ord== "Buy Limit" ) ticket= OrderSend ( Symbol (),OP_BUYLIMIT, Lot, NormalizeDouble (Ask - DistanceSet* Point , Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}
       if (SchSellLimit< 1 ) { if (ord== "Sell Limit" ) ticket= OrderSend ( Symbol (),OP_SELLLIMIT,Lot, NormalizeDouble (Bid + DistanceSet* Point , Digits ),Proskalz,SL,TP, "" ,MAGIC, 0 );}      
       if (ticket==- 1 ) //неудачная попытка
      {  
         ShowERROR();
         err++; Sleep ( 2000 );RefreshRates();
      }
       if (ticket || err > 10 ) return ;
   }
return ;
}                                    
//--------------------------------------------------------------------
void ShowERROR()
{
   int err= GetLastError ();
   switch ( err )
   {                  
       case 1 :   return ;
       case 2 :   Alert ( "Нет связи с торговым сервером " , Symbol ()); return ;
       case 3 :   Alert ( "Error неправильные параметры " , Symbol ()); return ;
       case 130 : Alert ( "Error близкие стопы   Ticket " , Symbol ()); return ;
       case 134 : Alert ( "Недостаточно денег   " , Symbol ()); return ;
       case 146 : Alert ( "Error Подсистема торговли занята " , Symbol ()); return ;
       case 129 : Alert ( "Error Неправильная цена " , Symbol ()); return ;
       case 131 : Alert ( "Error Неправильный объем " , Symbol ()); return ;
       case 4200 : Alert ( "Error Объект уже существует " , Symbol ()); return ;
       default :   Alert ( "Error  " ,err, " " , Symbol ()); return ;
   }
}

+ karşılık gelen sayaçlar.

Teşekkür ederim.