Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 812

 

Matematikte problem olmaması nasıl mümkün olabilir?

 input double     T_P  = 0.81 ;
input double     S_L  = 0.35 ;

b_ep=price-atrH1200;
b_sl=b_ep-(b_ep*S_L)/ 100 ;
b_tp=b_ep+(b_ep*T_P)/ 100 ;

1.05 * 0.81/100 = 0.008505 gibi

%0,81 ve %0,35 yerine %35 stop ve %81 teknik kâr sağlar

SellLimit(LOT_FOR_TRADE,s_ep,symb,s_sl,s_tp, ORDER_TIME_DAY , 0 , "SellLimit" );

BuyLimit(LOT_FOR_TRADE,b_ep,symb,b_sl,b_tp,ORDER_TIME_DAY,0,"BuyLimit");

SellLimit& BuyLimit standart kitaplığından yöntem


 Print (s_ep, "s_ep" );
Print (s_sl, "s_sl" );
Print (s_tp, "s_tp" );

Baskı gösterileri:

2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep

2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl

2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp


 
SILVERPRINT :

Matematikte problem olmaması nasıl mümkün olabilir?

1.05 * 0.81/100 = 0.008505 gibi

%0,81 ve %0,35 yerine %35 stop ve %81 teknik kâr sağlar

SellLimit& BuyLimit standart kitaplığından yöntem


Baskı gösterileri:

2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.04236745s_ep

2017.12.24 07:55:27.559 2017.01.03 16:54:17 1.25084094s_sl

2017.12.24 07:55:27.559 2017.01.03 16:54:17 0.521183725s_tp



Aynı kodu yeniden yazın, ancak TÜM değişkenler bildirilecek şekilde. Ne tür değişkenler bildirdiğinizi göreceğim. Ve zaten doğru karar için bir taş atımı var.

 
Vladimir Karputov :

Aynı kodu yeniden yazın, ancak TÜM değişkenler bildirilecek şekilde. Ne tür değişkenler bildirdiğinizi göreceğim. Ve zaten doğru karar için bir taş atımı var.


//+------------------------------------------------------------------+
//|                                                       |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
#include <Indicators\Trend.mqh>
#include <Indicators\Oscilators.mqh>
#include <Indicators\TimeSeries.mqh>
#include <Trade\Trade.mqh>
input double    T_P  =0.81;
input double    S_L  =0.35;
static int hour;
int h;
input int TIME_FOR_ACTION=16;
input int slowma=200;
input int fastwma=20;
input int mahours=20;
input double LOT_FOR_TRADE=0.1;
string symb;
MqlTick infotick;
MqlDateTime currentTime;
CiMA ValueofMA200;
CiMA ValueofMA20;
CiMA ValueofMAHour;
CiATR atr;
CTrade T_M;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   symb=_Symbol;
   ValueofMA200.Create(symb,PERIOD_D1,slowma,0,MODE_SMA,PRICE_CLOSE);
   ValueofMA20.Create(symb,PERIOD_D1,fastwma,0,MODE_SMA,PRICE_CLOSE);
   ValueofMAHour.Create(symb,PERIOD_H1,mahours,0,MODE_SMA,PRICE_CLOSE);
   atr.Create(symb,PERIOD_H1,200);


   atr.BufferResize(40);
   ValueofMA200.BufferResize(250);
   ValueofMA20.BufferResize(250);
   ValueofMAHour.BufferResize(250);

   T_M.LogLevel(LOG_LEVEL_ALL);

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   RefCustom();
   SymbolInfoTick(symb,infotick);
   TimeToStruct(infotick.time,currentTime);

   if(1==1)
     {
      if(1==1)
        {
         double maD1200,maD120,maH120,atrH1200,price;

         maD1200=ValueofMA200.Main(0);
         maD120=ValueofMA20.Main(0);
         maH120=ValueofMAHour.Main(0);
         atrH1200=atr.Main(0);
         price=infotick.bid;
         double s_ep,s_sl,s_tp;
         double b_ep,b_sl,b_tp;


         if(1==1)
           {
            b_ep=price-atrH1200;
            b_sl=b_ep-(b_ep*S_L)/100;
            b_tp=b_ep+(b_ep*T_P)/100;
            T_M.BuyLimit(LOT_FOR_TRADE,b_ep,symb,b_sl,b_tp,ORDER_TIME_DAY,0,"BuyLimit");
           }
         if(1==1)
           {
            s_ep=price+atrH1200;
            s_sl=s_ep+(s_ep*S_L)/100;
            s_tp=s_ep-(s_ep*T_P)/100;

            T_M.SellLimit(LOT_FOR_TRADE,s_ep,symb,s_sl,s_tp,ORDER_TIME_DAY,0,"SellLimit");
           }
}

     }
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---

  }
//+------------------------------------------------------------------+
void RefCustom()
  {
   ValueofMA200.Refresh();
   ValueofMA20.Refresh();
   ValueofMAHour.Refresh();
   atr.Refresh();
  }
//+------------------------------------------------------------------+

 
SILVERPRINT :


Hatalar. Derleme yapmaz.

 
Vladimir Karputov :

Hatalar. Derleme yapmaz.


Üzgünüm, şimdi deneyin.

 
SILVERPRINT :

Üzgünüm, şimdi deneyin.


Belki gece - bu yüzden ne yapmaya çalıştığınızı TÜM anlamıyorum.

Tavsiye:

  • bildirirken, INITIALIZE değişkenleri
  • bölerken, int ile değil ikiye bölün (ör. sayı 100.0 -> double, sayı 100 -> int)
  • bu stil nedir if(1==1) - ? Bu korkunç, asla böyle yazma
  • son olarak, en önemlisi, kodda sadece üç satır bırakın,

            b_ep=price-atrH1200;
            b_sl=b_ep-(b_ep*S_L)/ 100 ;
            b_tp=b_ep+(b_ep*T_P)/ 100 ;

  • değişkenleri açıkça bildirir ve başlatır. Örneğin şöyle:

   double price= 1.05848 ;
   double atrH1200= 1.05168 ;
   double T_P= 0.81 ;
   double S_L= 0.35 ;

   double b_ep=price-atrH1200;
   double b_sl=b_ep-(b_ep*S_L)/ 100.0 ;
   double b_tp=b_ep+(b_ep*T_P)/ 100.0 ;
   DebugBreak ();
 
Vladimir Karputov :

Belki gece - bu yüzden ne yapmaya çalıştığınızı TÜM anlamıyorum.

Tavsiye:

  • bildirirken, INITIALIZE değişkenleri
  • bölerken, int ile değil ikiye bölün (ör. sayı 100.0 -> double, sayı 100 -> int)
  • bu stil nedir if(1==1) - ? Bu korkunç, asla böyle yazma
  • son olarak, en önemlisi, kodda sadece üç satır bırakın,

  • değişkenleri açıkça bildirir ve başlatır. Örneğin şöyle:


Teşekkürler çok yardımcı oldunuz.

 
Garip, ancak sıfırdan fazla sipariş olsa bile işlev çalışıyor.
 if ( OrdersTotal ()== 0 )

Yani gerçekten hiçbir şeyi değiştirmez, ancak işlevin çalışmadığı durumlarda, tüm depozito için açılabilir.

 
SILVERPRINT :
Garip, ancak sıfırdan fazla sipariş olsa bile işlev çalışıyor.

Yani aslında hiçbir şeyi değiştirmez, ancak işlevin çalışmadığı durumlarda, tüm depozito için açılabilir.

İşlev için MT5 yardımını açın ve MT5'te bir siparişin ne olduğunu anladığınızdan emin olun.

 
F1'e bastım ve bastım ve bulamadım ..

Lütfen bana başka bir karakter için _Digits'i nasıl tanımlayacağımı söyler misiniz?