MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1227

 

Merhaba! Şubeyi biraz canlandıracağım: kodda böyle bir soru:

 int stoplevel;
int MinimumUseStopLevel;

// Calculate stoplevel as max of either STOPLEVEL or FREEZELEVEL
   stoplevel = fmax ( SymbolInfoInteger ( _Symbol ,MODE_FREEZELEVEL), SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_STOPS_LEVEL ));
// Then calculate the stoplevel as max of either this stoplevel or MinimumUseStopLevel
   stoplevel = fmax (MinimumUseStopLevel, stoplevel);

derlerken, "tür dönüşümü nedeniyle olası veri kaybı ..." uyarısını veriyor. Onun neye ihtiyacı var? Çok kritik değil, ama bilmek istiyorum.


Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 
Sayberix :

Merhaba! Şubeyi biraz canlandıracağım: kodda böyle bir soru:

derlerken, "tür dönüşümü nedeniyle olası veri kaybı ..." uyarısını veriyor. Onun neye ihtiyacı var? Çok kritik değil, ama bilmek istiyorum.


Site motorunun kendisi cevaba bir bağlantı ekledi ve açık bir tip döküm örneği var ………

 //--- ускорение свободного падения
   double g= 9.8 ;
   double round_g=( int )g;
   double math_round_g= MathRound (g);
   Print ( "round_g = " ,round_g);
   Print ( "math_round_g =" ,math_round_g);
/*
   Результат:
   round_g = 9
   math_round_g = 10
*/
 
Sayberix :

Merhaba! Şubeyi biraz canlandıracağım: kodda böyle bir soru:

derlerken, "tür dönüşümü nedeniyle olası veri kaybı ..." uyarısını veriyor. Onun neye ihtiyacı var? Çok kritik değil, ama bilmek istiyorum.


Sadece bir uyarınız değil, aynı zamanda bir hatanız da var. Derlediğin kodun bu olduğundan emin misin?

Yani ihtiyacın var:

   int stoplevel= 0 ;
   int MinimumUseStopLevel= 0 ;

// Calculate stoplevel as max of either STOPLEVEL or FREEZELEVEL
   stoplevel = int ( fmax ( SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_FREEZE_LEVEL ), SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_STOPS_LEVEL )));
// Then calculate the stoplevel as max of either this stoplevel or MinimumUseStopLevel
   stoplevel = int ( fmax (( int )MinimumUseStopLevel,( int )stoplevel));

Sadece kodu anlamadan - böylece hata ve uyarı olmaz.

Ve bir düşünürsen, ılık ile ıslakı karıştırırsın.

 
Artyom Trishkin :

Sadece bir uyarınız değil, aynı zamanda bir hatanız da var. Derlediğin kodun bu olduğundan emin misin?

Yani ihtiyacın var:

Sadece kodu anlamadan - böylece hata ve uyarı olmaz.

Ve bir düşünürsen, ılık ile ıslakı karıştırırsın.

Teşekkür ederim.

Beni fazla azarlama, sadece öğreniyorum - başka birinin kodunu bulmaya çalışıyorum. Bence bu öğrenmenin en hızlı yolu.

Tüm değişkenler int ise ve dönüş değerleri symbolinfointeger üzerinden ise neden tip dökümüne ihtiyacı olduğunu anlamıyorum?

 
Sayberix :

Teşekkür ederim.

Beni fazla azarlama, sadece öğreniyorum - başka birinin kodunu çözmeye çalışıyorum. Bence, bu öğrenmenin en hızlı yolu.

Tüm değişkenler int ise ve dönüş değerleri symbolinfointeger üzerinden ise neden tip dökümüne ihtiyacı olduğunu anlamıyorum?

SymbolInfoInteger() uzun döndürür
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 

İyi günler sevgili programcılar!

Söyleyin bana, manuel olarak açılan pozisyonlar veya genel olarak başka bir danışman tarafından açılan diğer pozisyonlar ne olursa olsun, danışman açık pozisyonlarını nasıl yapabilirim. Evet, sihir yardımıyla yapmaya çalıştım ama nedense işe yaramıyor. İşte kod:

 datetime some_time= TimeCurrent ();
extern string Symbol3 = "" ; //Инструмент (""текущий по умолчанию)
extern int P= 1 ;           //Таймфрейм
extern int MagicNumber = 100500 ;


int start()
{

int send;
                                      
double SL= 50 ;                                   
double TP= 50 ;                       
double Lots= 3 ;       

      
//&&(OrderMagicNumber() == MagicNumber)
//&&(OrdersTotal() ==0)&&    
 
              
if ((Close[ 0 ]>High[ 1 ])&&(OrderMagicNumber() != MagicNumber)) 
{
send= OrderSend (Symbol3,OP_BUY,Lots,Ask, 3 ,Bid-SL* Point ,Bid+TP* Point ,MagicNumber);
}

if ((Close[ 0 ]<Low[ 1 ])&&(OrderMagicNumber() != MagicNumber))
{
send= OrderSend (Symbol3,OP_SELL,Lots,Bid, 3 ,Ask+SL* Point ,Ask-TP* Point ,MagicNumber);
}

return ( 0 );
}
 
Alexey Belyakov :

İyi günler sevgili programcılar!

Söyleyin bana, manuel olarak açılan pozisyonlar veya genel olarak başka bir danışman tarafından açılan diğer pozisyonlar ne olursa olsun, danışman açık pozisyonlarını nasıl yapabilirim. Evet, sihir yardımıyla yapmaya çalıştım ama nedense işe yaramıyor. İşte kod:


Eksik alanlarınız var ve numarayı kontrol etmek için bir sipariş seçimi yok

 int n = 0 ;
for ( int i = OrdersTotal (); i >= 0 ; i--) {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderSymbol() != _Symbol ) continue ;
       if (OrderMagicNumber() != magic) continue ;     
n++;
}

if (n == 0 ){
OrderSend ( _Symbol , _type, lot, price, 0 , sl, tp, comment, magic, 0 , clrNONE );
}
 
Bir hesaptan nasıl para çekilir

 
Yardım edin.. attım ama çıkaramıyorum
 
Georgiy Liashchenko :


Eksik alanlarınız var ve numarayı kontrol etmek için bir sipariş seçimi yok

Eklendi. Değilim. Gruplar halinde açılır. Büyü - yok sayar


 datetime some_time= TimeCurrent ();
//extern string Symbol3 = ""; //Инструмент (""текущий по умолчанию)
extern int P= 1 ;           //Таймфрейм
extern int MagicNumber = 100500 ;


int start()
{

int send;
                                     
double SL= 200 ;                                   
double TP= 200 ;                       
double Lots= 1 ;       

int n = 0 ;
for ( int i = OrdersTotal (); i >= 0 ; i--) 
{
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
       if (OrderSymbol() != "EURUSD" ) continue ;
       if (OrderMagicNumber() != MagicNumber) continue ;     
n++;
}
          
//&&(OrderMagicNumber() == MagicNumber)
//&&(OrdersTotal() ==0)&&    
             
if ((Close[ 0 ]>High[ 1 ])&&(n== 0 ))
{
send= OrderSend ( "EURUSD" ,OP_BUY,Lots,Ask, 3 ,Bid-SL* Point ,Bid+TP* Point ,MagicNumber);
}

if ((Close[ 0 ]<Low[ 1 ])&&(n== 0 ))  
{
send= OrderSend ( "EURUSD" ,OP_SELL,Lots,Bid, 3 ,Ask+SL* Point ,Ask-TP* Point ,MagicNumber);
}

return ( 0 );
}