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

 
Marco vd Heijden :

Demo hesap mı yoksa canlı hesap mı olduğunu doğrulamak için hayır, yarışma nadiren kullanılır.
Lot max çok kolay olabilir.

Hızlı yanıt için teşekkürler.

Sadece maksimum lot büyüklüğü sadece Demo hesabı uygulamam gerekiyor.
(ama tabii ki gerçek hesap - bu sadece test amaçlıdır - Demo hesap, eğer lot büyüklüğü daha iyiyse, o zaman parti büyüklüğü max satış ve satın alma emirlerini açmayacaksa denemek istiyorum - ama eğer gerçek hesap veya yarışma hesabıysa - yani bu lot size max her ikisini de uygulamaz (canlı veya yarışma)

Anahtar operatörünü kullanabilir miyim?

Çok teşekkürler.
(Daha sonra deneyeceğim.)

 
Evet, switch operatörünü kullanabilirsiniz.
 
Marco vd Heijden :
//---
// calculate lotsize here
//---

// check if lotsize is not too high

if (lotsize>lotsize_max)
{
  lotsize=losize_max;
}

Sormak istiyorum - söylemek ister misiniz - Demo hesabı için "lotsize > lotsize_max" parti büyüklüğü "lotsize = lotsize_max" olmalı mı? Seni doğru anlıyorum lütfen?

Çok teşekkürler.
( Üzerinde çalışıyorum )

 
Max Enrik :

Sormak istiyorum - söylemek ister misiniz - Demo hesabı için "lotsize > lotsize_max" parti büyüklüğü "lotsize = lotsize_max" olmalı mı? Seni doğru anlıyorum lütfen?

Çok teşekkürler.
( Üzerinde çalışıyorum )

Denemek
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;
 
honest_knave :
Denemek
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;

Ey! Güzel! Çok teşekkürler.

----
işlevin bana - Evet veya Hayır - sorması gerektiğini düşünüyorum - bunun şimdilik daha iyi olabileceğini düşünüyorum. (Bu işlev için deneyime ihtiyacım var, demo (tabii ki canlı) hesabımda benim için nasıl çalışıyor - bu işlevi Pazartesi günü test edeceğim - kodun bu bölümünü bitirebilirsem)
(şimdi bu fonksiyon hakkında yeterince bilgim yok - umarım yarına kadar yapabilirim)

Herhangi bir iyi yorum benim için en iyi yardımcı olacaktır.
Şimdiden teşekkürler.

 

Evet, elbette, lotmax olmadan onunla devam edin ve daha sonra stratejinizde ince ayar yapmak veya riski sınırlamak istiyorsanız, onu kullanabilirsiniz, bu nedenle şu anda böyle bir zorunluluk değildir.

Bunu ortadan kaldırabilirsiniz, sadece size güvenlik mekanizmamın bazı satırlarını göstermek istedim.


Onay istiyorsanız, bir

MessageBox ()

https://docs.mql4.com/common/messagebox


int result= MessageBox ( " This is a Messagbox, Do you want to proceed?" , "Warning" , MB_YESNO );

if (result== IDYES )
{
   // Yes Pressed
   Print ( "OK" );
}

if (result== IDNO )
{
   // No Pressed
}

Mesaj kutusu işlevinde mesajdan sonra ayarladığınız ana bayraklar şunlardır:

Devamlı

Değer

Tanım

MB_OK

0x00000000

Mesaj penceresi yalnızca bir düğme içerir: Tamam. Varsayılan

MB_OKCANCEL

0x00000001

Mesaj penceresi iki düğme içerir: Tamam ve İptal

MB_ABORTRETRYIGNORE

0x00000002

Mesaj penceresi üç düğme içerir: Durdur, Yeniden Dene ve Yoksay

MB_YESNOCANCEL

0x00000003

Mesaj penceresi üç düğme içerir: Evet, Hayır ve İptal

MB_EVETHAYIR

0x00000004

Mesaj penceresi iki düğme içerir: Evet ve Hayır

MB_RETRYCANCEL

0x00000005

Mesaj penceresi iki düğme içerir: Yeniden Dene ve İptal

MB_CANCELTRYDEVAM

0x00000006

Mesaj penceresi üç düğme içerir: İptal, Yeniden Dene, Devam


Ve burada dönüş değerleri:

Devamlı

Değer

Tanım

IDOK

1

"Tamam" düğmesine basıldı

IDCANCEL

2

"İptal" düğmesine basıldı

IDABORT

3

"İptal" düğmesine basıldı

IDRETRY

4

"Yeniden dene" düğmesine basıldı

IDIGNORE

5

"Yoksay" düğmesine basıldı

İDLER

6

"Evet" düğmesine basıldı

KİMLİK NUMARASI

7

"Hayır" düğmesine basıldı

İDTRYA TEKRAR

10

"Tekrar Dene" düğmesine basıldı

IDDEVAM

11

"Devam" düğmesine basıldı


Messagebox() test cihazında çalışmıyor.

MessageBox - Common Functions - MQL4 Reference
MessageBox - Common Functions - MQL4 Reference
  • docs.mql4.com
MessageBox - Common Functions - MQL4 Reference
 
Marco vd Heijden :

Evet, elbette, lotmax olmadan onunla devam edin ve daha sonra stratejinizde ince ayar yapmak veya riski sınırlamak istiyorsanız, onu kullanabilirsiniz, bu nedenle şu anda böyle bir zorunluluk değildir.
Bunu ortadan kaldırabilirsiniz, sadece size güvenlik mekanizmamın bazı satırlarını göstermek istedim.

Harika yardımlarından biri için çok daha fazla teşekkürler.

Yani, sadece aşağıdaki yöntemi denedim, doğru mu yapıyorum, lütfen?
(Onları ana .mq4 dosyama getirmeden önce sormam gerekiyordu - üzerinde çalışıyorum)

Şimdiden teşekkürler.

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }

   if (result_message== IDNO )
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}
 

Sadece kodunuzun çalışmasını (çok, çok az) daha verimli hale getirecek bir stil ipucu... ama hey, her şey yolunda!

2 düğmeli bir mesaj kutunuz var. IDYES değilse, IDNO olmalıdır (veya işlev başarıyla tamamlanmamıştır).

Bu nedenle, result_message'ı iki kez test etmeye gerek yoktur.

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }
    else
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}

Yazılı olarak görmeyi tercih ederseniz, bir 'else if' ifadesi kullanın:

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }

   else if (result_message== IDNO )
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}
 
honest_knave :

Sadece kodunuzun çalışmasını (çok, çok az) daha verimli hale getirecek bir stil ipucu... ama hey, her şey yolunda!
2 düğmeli bir mesaj kutunuz var. IDYES değilse, IDNO olmalıdır (veya işlev başarıyla tamamlanmamıştır).
Bu nedenle, result_message'ı iki kez test etmeye gerek yoktur.

Her şey için çok daha fazla teşekkürler.
Şimdi, onları ana EA'lara koyabilirim.
(ayrıca MessageBox() için deneyime ihtiyacım var)

 
Max Enrik :

Her şey için çok daha fazla teşekkürler.
Şimdi, onları ana EA'lara koyabilirim.
(ayrıca MessageBox() için deneyime ihtiyacım var)

Diğer şekilde yazılmasında yanlış bir şey yoktu, bu sadece kişisel bir tercih meselesi. Düzenlediğine sevindim.