Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 170

 
ponochka :
Merhaba! İşlevi kullanarak ekranın ekran görüntüsünü alıyorum:
WindowScreenShot("Screenshotname.png",1280,720); ama her şeyi Dosyalar klasörüne kaydeder ve onu kaydetmek için başka bir klasörün yolunu belirtmem gerekiyor! nasıl yapılır?
Sembolik bağlantılar kullanın
 

Merhaba!

Başlangıçta, Expert Advisor, serbest marjla acil kilitleme olasılığını uyguladı.İşte kodun bir kısmı

if ( AccountFreeMargin() <= inpMarginLock)

{

gv.isEmergencyLock = doğru;

...................

Zamanla, bunun çok uygun olmadığı anlaşıldı.

Bir çekme yoluyla bir acil durum kilidi uygulamak istiyorum.

Onlar. diyelim ki, depozito üzerinde -100 dolara ulaşıldığında, kilitleme gerçekleşmelidir.

bu yüzden, eğer biri koda AccountFreeMargin() yerine bir şey yazabilirse, yardım etmenizi rica ediyorum, böylece olur.

acil kilitleme, serbest marjla değil, mevduatta bir düşüşe ulaşıldığında.

Şimdiden teşekkürler!!!!!!!

 
Merhaba, bir sorunum var, F9'a bastığınızda emir açma menüsü her zamanki gibi çıkıyor, ancak orada bir çift enstrüman seçmeniz gerekiyor ve eskisi gibi değil, bunun için hangi enstrümanın açıldığını ve menü belirdiğini söyleyin, söyleyin ben bunu nasıl düzeltirim.
 
Andrey Sablin :
Merhaba, bir sorunum var, F9'a bastığınızda emir açma menüsü her zamanki gibi çıkıyor, ancak orada bir çift enstrüman seçmeniz gerekiyor ve eskisi gibi değil, bunun için hangi enstrümanın açıldığını ve menü belirdiğini söyleyin, söyleyin ben bunu nasıl düzeltirim.

Servis --> Ayarlar --> Ticaret


 

Tünaydın)

Yardım edin lütfen, acemiyim..... Süper sinyaller-kanal ve ZigZag göstergelerinin kesiştiği noktada Uzman Danışman yapmaya çalışıyorum, bir şablon buldum. Oraya göstergeler attım ama emirler hiç açılmıyor. İşte kodun bir parçası .... neyi yanlış yapıyorum?...

void Signal(double& ar[][],bool& op[],bool&cl[])

{

inttrd=-1;

ikiye katlama=0.0,dn=0.0;

//---

ArrayInitialize(cl,false);

ArrayInitialize(op,false);

//ZigZag filtre göstergesini bağlayın

up=iCustom(_Symbol,tf,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//isim, ayarlar, arabellek, SATIN AL için mum başlangıcı

dn=iCustom(_Symbol,tf,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//ad, ayarlar, arabellek, SATIŞ için mum başlangıcı

if(dn==EV)trd=0;

if(up==EV)trd=0; //Yorum(trd);

// geri dönüş göstergesini bağla ve işlemden çık

up=iCustom(_Symbol,tf,"SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);//SATIN AL için mum başlangıcı

dn=iCustom(_Symbol,tf,"SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0);//SAT için mum başlangıcı

if(up>0.0 && up<EV) cl[1]=true;

if(dn>0.0 && dn<EV) cl[0]=true;

yukarı=0.0;

dn=0.0;

// pazara girdiğimiz ana gösterge

anahtar (Gösterge)

{

durum SuperSignalsChannel:

up=iCustom(_Symbol,tf,"SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);//SATIN için mum başlangıcı

dn=iCustom(_Symbol,tf,"SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);//SATIŞ için mum başlangıcı

kırmak;


Not: Forumda buna benzer bir konu varsa lütfen link bırakın.

 


Tünaydın. Böyle bir danışman var, ihtiyaçlarıma göre yeniden yapmaya çalışıyorum ama şu ana kadar pek iyi değil. Emirler yüksek ve düşük fiyatlarla açılıyor ama yüksek + 5 puan olması gerekiyor. Bundan mesafe kümesinin sorumlu olduğunu biliyorum, ancak kodda uygulayamıyorum. Yardım için umut. Teşekkürler))))

 //+------------------------------------------------------------------+
//|                                                 
//+------------------------------------------------------------------+


extern string TimeTrade  = "19:00" ;     // Время открытия позиции
extern int     DistanceSet    = 100 ;
extern int TYPE = 0 ;
extern int TP = 50 ;
extern int SL = 4500 ;
extern double lot = 0.1 ;
extern int Magic_Number = 639713 ;

int init(){   return ( 0 );}
int deinit(){   return ( 0 );}
int start()
{
   double SPREAD = MarketInfo ( Symbol (), MODE_SPREAD )* Point ;
   double STOPLEVEL = MarketInfo ( Symbol (), MODE_STOPLEVEL )* Point ;
   double pAsk= Ask +(DistanceSet)* Point ;
   double pBid= Bid -DistanceSet* Point ;

   if (Orders_Total( Magic_Number, Symbol ()) == 0 )
   {
       //Установка ордеров
       if (TYPE<= 0 )
      {
         // Здесь установим STOP-ордера
         if ( iHigh ( Symbol (), PERIOD_D1 , 1 )+SPREAD - STOPLEVEL > Ask )
             OrderSend ( Symbol (), OP_BUYSTOP ,lot, iHigh ( Symbol (), PERIOD_D1 , 1 )+SPREAD, 3 , iHigh ( Symbol (), PERIOD_D1 , 1 ) - SL* Point , iHigh ( Symbol (), PERIOD_D1 , 1 ) + TP* Point , NULL ,Magic_Number, iTime ( Symbol (), PERIOD_D1 , 0 )+ PERIOD_D1 * 60 ,Aqua);
         else Alert ( "Невозможно установить OP_BUYSTOP, цена слишком близка или выше High" );
         if ( iLow ( Symbol (), PERIOD_D1 , 1 ) + STOPLEVEL < Bid )
             OrderSend ( Symbol (), OP_SELLSTOP ,lot, iLow ( Symbol (), PERIOD_D1 , 1 ), 3 , iLow ( Symbol (), PERIOD_D1 , 1 ) + SPREAD + SL* Point , iLow ( Symbol (), PERIOD_D1 , 1 ) + SPREAD - TP* Point , NULL ,Magic_Number, iTime ( Symbol (), PERIOD_D1 , 0 )+ PERIOD_D1 * 60 ,Magenta);
         else Alert ( "Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low" );
      }
       if (TYPE>= 1 )
      {
         // Здесь установим LIMIT-ордера
         if ( iHigh ( Symbol (), PERIOD_D1 , 1 ) - STOPLEVEL > Bid )
             OrderSend ( Symbol (), OP_SELLLIMIT ,lot, iHigh ( Symbol (), PERIOD_D1 , 1 ), 3 , iHigh ( Symbol (), PERIOD_D1 , 1 ) + SPREAD + SL* Point , iHigh ( Symbol (), PERIOD_D1 , 1 ) + SPREAD - TP* Point , NULL ,Magic_Number, iTime ( Symbol (), PERIOD_D1 , 0 )+ PERIOD_D1 * 60 ,Magenta);
         else Alert ( "Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High" );
         if ( iLow ( Symbol (), PERIOD_D1 , 1 ) + STOPLEVEL < Ask )
             OrderSend ( Symbol (), OP_BUYLIMIT ,lot, iLow ( Symbol (), PERIOD_D1 , 1 )+SPREAD, 3 , iLow ( Symbol (), PERIOD_D1 , 1 ) - SL* Point , iLow ( Symbol (), PERIOD_D1 , 1 ) + TP* Point , NULL ,Magic_Number, iTime ( Symbol (), PERIOD_D1 , 0 )+ PERIOD_D1 * 60 ,Aqua);
         else Alert ( "Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low" );
      }
   }
   return ( 0 );
}


//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//
int Orders_Total( int mn, string sym)
{
   int num_orders= 0 ;
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
   {
       OrderSelect (i, SELECT_BY_POS , MODE_TRADES );
       if ( OrderMagicNumber () == mn && sym== OrderSymbol ())
         num_orders++;
   }
   return (num_orders);
}



 
Aleksandr SHablevskiy :


Tünaydın. Böyle bir danışman var, ihtiyaçlarıma göre yeniden yapmaya çalışıyorum ama şu ana kadar pek iyi değil. Emirler yüksek ve düşük fiyatlarla açılıyor ama yüksek + 5 puan olması gerekiyor. Bundan mesafe kümesinin sorumlu olduğunu biliyorum, ancak kodda uygulayamıyorum. Yardım için umut. Teşekkürler))))




extern string TimeTrade  = "19:00";    // Время открытия позиции

extern int    DistanceSet    = 100;

extern int    DistanceStopOrder    = 5;

extern int    DistanceLimitOrder   = 5;

extern int TYPE = 0;

extern int TP = 50;

extern int SL = 4500;

extern double lot = 0.1;

extern int Magic_Number = 639713;


int init(){   return(0);}

int deinit(){   return(0);}

int start()

{

   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;

   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

   double pAsk=Ask+(DistanceSet)*Point;

   double pBid=Bid-DistanceSet*Point;


   if(Orders_Total( Magic_Number, Symbol()) == 0 )

   {

      //Установка ордеров

      if(TYPE<=0)

      {

         // Здесь установим STOP-ордера

         if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)

            OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)

            OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");

      }

      if(TYPE>=1)

      {

         // Здесь установим LIMIT-ордера

         if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)

            OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)

            OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");

      }

   }

   return(0);

}



//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//

int Orders_Total( int mn, string sym)

{

   int num_orders=0;

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

   {

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(OrderMagicNumber() == mn && sym==OrderSymbol())

         num_orders++;

   }

   return(num_orders);//---

   

  }

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



 
Lehfr :

extern string TimeTrade  = "19:00";    // Время открытия позиции

extern int    DistanceSet    = 100;

extern int    DistanceStopOrder    = 5;

extern int    DistanceLimitOrder   = 5;

extern int TYPE = 0;

extern int TP = 50;

extern int SL = 4500;

extern double lot = 0.1;

extern int Magic_Number = 639713;


int init(){   return(0);}

int deinit(){   return(0);}

int start()

{

   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;

   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

   double pAsk=Ask+(DistanceSet)*Point;

   double pBid=Bid-DistanceSet*Point;


   if(Orders_Total( Magic_Number, Symbol()) == 0 )

   {

      //Установка ордеров

      if(TYPE<=0)

      {

         // Здесь установим STOP-ордера

         if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)

            OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)

            OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");

      }

      if(TYPE>=1)

      {

         // Здесь установим LIMIT-ордера

         if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)

            OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)

            OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");

      }

   }

   return(0);

}



//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//

int Orders_Total( int mn, string sym)

{

   int num_orders=0;

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

   {

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(OrderMagicNumber() == mn && sym==OrderSymbol())

         num_orders++;

   }

   return(num_orders);//---

   

  }

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



Teşekkür ederim nazik adam, her şey çalışıyor))))
 

İyi günler, lütfen genç ustaya köpeğin nereye gömüldüğünü söyleyin))

Momentum'u biraz yeniden yaptım, test ettim, olması gerektiği gibi çalışıyor gibi görünüyor, ancak bir danışmana aktarmaya çalışırken bilinmeyen bazı saçmalıklar oluyor, gerekli algoritmaya göre hesaplanıyor gibi görünüyor ama anlamıyorum ekstra 0.0449 nereden geliyor.

giriş int InpMomPeriod=1; // Momentum Periyodu

geçersiz OnTick()

{

double High1 = iCustom(Symbol(), PERIOD_CURRENT ,"INdekators 1.0",InpMomPeriod,0,0);

}

Dosyalar:
GBPUSDH11.png  16 kb
GBPUSDH1.png  16 kb
 

Merhaba sevgili programcılar.
Sana alçak yay!

Emirleri kapattıktan ve bir mesaj gönderdikten sonra, bir danışman var.

yani terminalde Otomatik ticareti devre dışı bırakmalısınız (düğmeye basın)

kullanıcının VPS sunucusuyla bağlantısı kesilirse bunu yapmaz.
Kullanıcı vps sunucusuna bağlandığında ve terminal açıkken pencereler açılır,
danışman çalışıyor, ardından düğme serbest bırakma işlevi mükemmel çalışıyor
ancak danışmanı başlattığınızda, vps sunucusuyla bağlantınız kesilir.
ve Uzman Danışmanın çalıştığına dair bir mesaj aldıktan sonra,
VPS'ye geri dönersiniz, düğmeye basılmaz.

Danışman , VPS sunucusu Windows Server 16 üzerinde çalışır .

Kodun bu kısmı bu işlevden sorumludur:

if(AutotradeOFF)PressOrReleaseAutotrade();

Sonuç - bu işlev, kullanıcının VPS sunucusuyla bağlantısı kesildiğinde çalışmaz.
Bu sorunu çözmek için herhangi bir alternatif var mı?

Ne yanlış olabilir?

Lütfen sorunu çözmeme yardım edin.

kodu ekliyorum.

Bu sorunu çözmede herhangi bir yardım için şimdiden çok teşekkürler!

Dosyalar:
Neden: