uzman danışman - çeşitli sorular - sayfa 11

 
Max Enrik :

Bana yardım ettikten sonra aşağıdaki kod mükemmel çalışıyor, teşekkürler dostum.

Ve dediğiniz gibi yeniden adlandırdım, işe yarıyor ama merak ediyorum, yanlış bir şey mi yapıyorum?
(sadece endişeleniyorum )

Kodunuzun çalışıp çalışmayacağı konusunda endişelenmek çok normaldir (aslında sağlıklıdır). Sıklıkla derlenen ancak istediğimizi yapmayan (insan hatası ve/veya bilgi eksikliği nedeniyle) kodlar göreceğiz.

En iyi yol, değişkenleri yazdırma ve dönüş kodlarını kontrol etme alışkanlığını edinmektir. Test ettikten sonra, print deyimlerini kaldırabilirsiniz.

Yukarıdaki kod parçacığınızı kullanarak basit bir Print("SL değeri: "+sl) ekleyebilir ve ardından değerlerin beklediğiniz gibi olup olmadığını görmek için Uzman günlüğünüzü kontrol edebilirsiniz.

 
Max Enrik : Sadece merak ediyorum, yanlış bir şey mi yapıyorum?
    { sl = Bid + points_to_change( stoploss * 10 ); }
Neden 10 ile çarpıyorsun? Stoploss piplerdeyse, 4 haneli brokerlerde çalışması için pip_to_change aracılığıyla dönüştürün.
 
Marco vd Heijden :
Tasarlandığı gibi çalışıyorsa, yanlış bir şey yapmıyorsanız basittir, aksi takdirde çalışmaz.

#Onay işareti - Kapalı

Evet! Bu bitmap etiketinin benden uzun zaman aldığını kabul ediyorum. Sonunda istediğimi elde ettim...
Tabii ki koca adam, yardımın için teşekkürler.

Sorunumu aşağıdaki kod gibi çözüyorum.

void ordersell()
{
     //  Sell set Stop Loss with bitmap label
    
     // when bitmap label shows - ON
     if ( ObjectGetInteger ( 0 , "bitmap label on off" , OBJPROP_STATE ) == true )
    {
        sl = Bid + points_to_change( stoploss * 10 );
         Print ( " | TRUE :  Active | " , "Bid: " , Bid , " | " , "Stop Loss: " , sl );
    }

     // when bitmap label shows - OFF
     if ( ObjectGetInteger ( 0 , "bitmap label on off" , OBJPROP_STATE ) == false )
    {
        sl = 0 ;
         Print ( " | FALSE :  Inactive | " , "Bid: " , Bid , " | " , "Stop Loss: " , sl );
    }

     // call your stop loss 'sl'
    ticket = OrderSend ( ..., sl, ... );
     // sounds
     if ( ticket > 0 )
    { PlaySound ( "ok.wav"       ); } else
    { PlaySound ( "timeout.wav" ); }
     return ;
}
 
honest_knave :

En iyi yol, değişkenleri yazdırma ve dönüş kodlarını kontrol etme alışkanlığını edinmektir. Test ettikten sonra, print deyimlerini kaldırabilirsiniz.
Yukarıdaki kod parçacığınızı kullanarak basit bir Print("SL değeri: "+sl) ekleyebilir ve ardından değerlerin beklediğiniz gibi olup olmadığını görmek için Uzman günlüğünüzü kontrol edebilirsiniz.

Onu zaten kullanıyorum, ancak bazen kodumdan şüphe duyuyorum çünkü #Checkmark sorunumu kontrol ederseniz , beni daha net anlayacağınızı umuyorum.
Her neyse, zaman ayırdığınız için teşekkürler.

 
whroeder1 :
Neden 10 ile çarpıyorsun? Stoploss piplerdeyse, 4 haneli brokerlerde çalışması için pip_to_change aracılığıyla dönüştürün.

Ey! Evet dostum, güzel soru, çoktan değiştim. İlginiz için teşekkürler.

 

#Zararı Durdur / Kar Al - Kapalı

Daha net yorumlarınız için teşekkürler Marco.
Senin için her şeyin en iyisini dilerim.

@Marco vd Heijden'e özel teşekkürler

 

#Ctrl + Fare Düğmesi - Aç

Birkaç saat geçirdim, bununla ilgili iyi belgeleri nasıl bulabilirim ve bunun için iyi bir bilgi ve belge bulamıyorum.
Lot boyutunu 0,1 oranında artırmak için ' Sol Fare + Ctrl 'ye tıkladığımda ihtiyacım var. (normalde 0.01 artar).

Bununla ilgili örnek belgeler ve makaleler bulmak istiyorum.

Şimdiden teşekkürler.

 
Max Enrik :

#Ctrl + Fare Düğmesi - Aç

Birkaç saat geçirdim, bununla ilgili iyi belgeleri nasıl bulabilirim ve bunun için iyi bir bilgi ve belge bulamıyorum.
Lot boyutunu 0,1 oranında artırmak için ' Sol Fare + Ctrl 'ye tıkladığımda ihtiyacım var. (normalde 0.01 artar).

Bununla ilgili örnek belgeler ve makaleler bulmak istiyorum.

Şimdiden teşekkürler.

Tuş kombinasyonlarını yakalamanın kolay bir yolunu bilmiyorum. 0,01 yerine 0,1 artırmak istiyorsanız, tıklamak için ikinci bir düğmeye sahip olmak daha iyi olur.

Yine de, aşağıdakileri deneyebilirsiniz:

Son olayın bir tuş vuruşu CTRL'si olup olmadığını kontrol edin.

Eğer öyleyse, bu olayın bir fare tıklaması olup olmadığını kontrol edin.

Ancak, bu yaklaşımla ilgili bazı sorunlar var:

1. Tuş vuruşu ve fare tıklaması arasında başka bir grafik olayı olursa, başarısız olur.

2. Fare tıklaması ile CTRL'yi bırakma arasındaki gecikmeden kaynaklanan bir miktar taşma elde edeceksiniz. Bunun için geçici çözümler kendi sorunlarını ortaya çıkaracaktır.

Belki başka insanların daha iyi fikirleri olacaktır.

#define CTRL 17

void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
   static bool wasCTRL= false ;
   if (wasCTRL && id== CHARTEVENT_CLICK ) Print ( "CTRL+CLICK detected" );
   wasCTRL=(id== CHARTEVENT_KEYDOWN && lparam==CTRL);
  }
 
//+------------------------------------------------------------------+
//|                                                      keydown.mq4 |
//|      Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

bool ctrl_click;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

   if(id==CHARTEVENT_CLICK)
     {
      //Print("CLICK");
      ctrl_click=1;
     }

   if(id==CHARTEVENT_KEYDOWN)
     {
      //Print(lparam);// print to identify keycode

      if(lparam==17)  // ctrl key
        {
         if(ctrl_click==1)// if mouse click
           {
            //Do Something when CTRL (keycode 17) is pressed
            Print("CTRL+CLICK");
            ctrl_click=0;  // reset
           }
        }
       ctrl_click=0; // reset if not ctrl
     }
  }
//+------------------------------------------------------------------+
 

Sanırım öyle.

Biraz farklı tho.