[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 479

 
Svinozavr >> :

Evet, her şey daha basit görünüyor - işlemin zamanı biliniyor. Eğer öyleyse, zaman çerçevesi şöyle olacaktır:


Time[iBarShift( NULL ,tf,DealTime)]

nerede
tf - istenen zaman aralığı,
DealTime - anlaşmanın zamanı (tarihle birlikte)


Teşekkür ederim ama ya henüz bir anlaşma olmadıysa ve DealTime planlanan anlaşmanın bilinen zamanıysa?

 
MoneyJinn >> :


Teşekkür ederim ama ya henüz bir anlaşma olmadıysa ve DealTime planlanan anlaşmanın bilinen zamanıysa?

neden yapıyorsun?))) tamam. Evet, daha da basit: tf*60*MathFloor(DealTime/60/tf) // değişkenlerin anlamı aynı

Komut dosyasını kontrol edebilirsiniz:

 #property show_inputs
extern int tf= 1440 ;
extern datetime DealTime;

void start() { Alert (TimeToStr(tf* 60 * MathFloor (DealTime/ 60 /tf)));}
===
Düzeltildi. Saniyeyi dakikaya çevirmeyi unuttum.)))
 
Danışmanımda yaklaşık 200 MA var, test ederken " grafiği aç " ı tıkladığınızda hepsi çiziliyor.
Görünmemeleri için onları kaldırmanın bir yolu var mı?
Teşekkür ederim
 
snowman647 >> :
у меня в советнике около 200 MA, при тестировани, когда жмешь "открыть график" они все рисуються.
можно их както убрать, чтоб не видно было?
спасибо

void HideTestIndicators( bool hide)
İşlev, EA tarafından çağrılan göstergeleri gizleme bayrağını ayarlar. Testten sonra bir çizelge açarken, gizle bayrağıyla işaretlenmiş göstergeler test çizelgesinde görüntülenmeyecektir. Her aramadan önce gösterge, halihazırda ayarlanmış olan gizleme bayrağıyla işaretlenir.
Test çizelgesinde yalnızca doğrudan test edilen Uzman Danışmandan çağrılan göstergelerin görüntülenebileceğine dikkat edilmelidir.

 
Pratik olarak MQL diline hakim olmaya çalışıyorum, Flip EA'ya Martingale işlevini eklemeye karar verdim!
Böylece SL'de katsayı ile çarpılan lotlu bir emir açacak ve TP'de ilk lottan başlayacaktı!
Ancak her siparişte partinin arttığı ortaya çıktı, TP ve SL'ye nasıl bir koşul koyacağımı bilmiyorum!
Lütfen bana doğru kodun nasıl görünmesi gerektiğini söyleyin!
 //--------------------------------------------------------------------
extern int  stoploss    = 50 ,
            takeprofit  = 50 ;
extern double  mult= 2 ;
extern double      Lot= 1 ;
int         tip;
//--------------------------------------------------------------------
int init()
{
   OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                        NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
}
//--------------------------------------------------------------------
int start()
{
   for ( int i= 0 ; i< OrdersTotal (); i++){   
      if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true){
         if (OrderSymbol()== Symbol ()){
            tip = OrderType();
            Lot = OrderLots(); return ;}}}
   if (Lot== 0 ) return ;
   if (tip== 0 ) OrderSend ( Symbol (),OP_SELL,Lot*mult,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
   if (tip== 1 ) OrderSend ( Symbol (),OP_BUY ,Lot*mult,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
   return ( 0 );
}
//-----------------------------------------------------------------
 
Kogalym >> :
Пытаюсь освоить язык MQL в качестве практики решил добавить в советник перевертыш функцию Мартингейла!
Что бы при SL открывал ордер лотом умноженным на коэффициент, а при TP начинал с первоночального лота!
Но получилось что лот увеличивается с каждым ордером, не знаю как поставить условие на TP и SL!
Подскажите пожалуйста как должен выглядеть правильный код!

Böyle bir fonksiyon olmalı

 double getLot()
{
   if (OrdersHistoryTotal()== 0 ) return ( 0.1 );
   // ищем самый последний закрытый ордер
   datetime time= 0 ;
   int ticket=- 1 ;
   for (i=OrdersHistoryTotal()- 1 ;i>= 0 ;i--)
   {
      if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol()== Symbol ())
         {
            if (OrderCloseTime()>time)
            {
               time=OrderCloseTime();
               ticket=OrderTicket();
            }
         }
      }
   }
   if (OrderTicket()!=ticket) OrderSelect (ticket,SELECT_BY_TICKET);
   if (OrderProfit()<= 0 ) return ( NormalizeDouble (OrderLots()*Martin_Koef, 2 ));
   if (OrderProfit()> 0 ) return ( 0.1 );
   //-----
}
 
Roger >> :

Evet, bu soruyla zaten kel bir yama yediler. Arama motoruna eski tik yazıp oku, oku, oku.

Madem bu kadar akıllısın, neden buradasın? Bu yüzden kötü olmak için zaman yazmak değil, zapadlo'ya cevap vermek üzücü. Oh iyi.

 
StatBars >> :

Böyle bir fonksiyon olmalı


saat nerde anlamadım
Benim düşünceme göre, kayıp durumunda lotun artmasından sadece son 3 satır sorumludur.
 if (OrderTicket()!=ticket) OrderSelect (ticket,SELECT_BY_TICKET);
   if (OrderProfit()<= 0 ) return ( NormalizeDouble (OrderLots()*Martin_Koef, 2 ));
   if (OrderProfit()> 0 ) return ( 0.1 );
 
Kogalym >> :


Anlamadım, saat nerede?
Bence kayıp durumunda lotu arttırmaktan sadece son 3 satır sorumludur.

Fonksiyon son kapatılan emri bulurken, kârına göre lot hesaplanır. Kapatılan zararı durdur emriniz hiçbir zaman kârda pozitif olmayacak ve kâr al ile kapatılan emir hiçbir zaman kârda negatif olmayacaksa, fonksiyon doğru şekilde çalışacaktır.
Bir trolünüz varsa, işlevin yeniden yapılması gerekir.

 
StatBars >> :

Fonksiyon son kapatılan emri bulurken, kârına göre lot hesaplanır. Kapatılan zararı durdur emriniz hiçbir zaman kârda pozitif olmayacak ve kâr al ile kapatılan emir hiçbir zaman kârda negatif olmayacaksa, fonksiyon doğru şekilde çalışacaktır.
Bir trolünüz varsa, işlevin yeniden yapılması gerekir.

TP ile aynı yönde emir açan, SL ile ters yönde emir açan bir danışman yazdım ama Martingale fonksiyonunu takıp ilkine dönemiyorum

 //--------------------------------------------------------------------
extern int  stoploss    = 50 ,
            takeprofit  = 50 ;
extern double  mult= 2 ;
extern double      Lot= 1 ;
//--------------------------------------------------------------------
int init()
{
   OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                        NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
}
//--------------------------------------------------------------------
int start()
{   for ( int i= 0 ; i< OrdersTotal (); i++){   
      if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true){
         if (OrderSymbol()== Symbol ()){
         Lot = OrderLots(); return ;}}}
            if (Lot== 0 ) return ;
        
  if (OrderType() == OP_SELL)
     if (OrderProfit()> 0 ) OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
   else OrderSend ( Symbol (),OP_BUY ,Lot,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
                                                                        
    if (OrderType() == OP_BUY) 
    if (OrderProfit()> 0 ) OrderSend ( Symbol (),OP_BUY ,Lot,Ask, 3 , NormalizeDouble (Bid - stoploss* Point , Digits ),
                                    NormalizeDouble (Ask + takeprofit* Point , Digits ), " " , 777 , Blue );
    else OrderSend ( Symbol (),OP_SELL,Lot,Bid, 3 , NormalizeDouble (Ask + stoploss* Point , Digits ),
                                    NormalizeDouble (Bid - takeprofit* Point , Digits ), " " , 777 , Blue );
                                     
       
   return ( 0 );
}
//-----------------------------------------------------------------

başlangıç partisi! Bu fonksiyonun nereye eklenmesi gerektiğini gösterebilir misiniz?