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

 
Multy :

Panyatna.

Bu arada, MQL4'ün bir zamanlayıcısı var mı yoksa sadece MQL5'te mi?

muhtemelen sadece bu işlevler:

https://www.mql5.com/en/search?utm_campaign=MQL4.community

https://www.mql5.com/en/search?utm_campaign=MQL4.community
 
kwadrad :

büyüklere soru

aniden test cihazı çalışmayı durdurdu, hiçbir tarihsel veriyi çizmedi.

Onunla ne yapmalı?

Bilgi için: Teklif arşivi yüklendi


Terminali yeniden başlatarak ve C:\Program Files\MetaTrader - Alpari\history\Alpari-Micro2 klasöründeki indirilen alıntıları önceden silerek yardımcı oldum.

sonra alıntı arşivini yeniden indirdi

 
Noterday :
Lütfen bana bir sipariş açmanın mümkün olan maksimum hacmini hesaplayan işlevi söyler misiniz?
Sana bir yem vereyim... :)
Aşağıdaki fonksiyon, ihtiyacınız olan parametreleri hesaplamak için tüm verilere sahiptir. O kadar tembeldim ki tuşlara bile bastım...

İhtiyacınız olanı kendiniz bulacak ve kendiniz için yeniden oluşturacaksınız... Kodun kendisi o kadar basit ve erişilebilir ki, yeniden yapmak hiç kimse için zor olmayacak...

 // ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots( double lt, double divider= 4.0 )         // lt = проверяемый лот, divider = на сколько разделить
{                                                         //                                 свободные средства
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/divider,dig);   // Свободные средства, разрешенные к торговле
   
   lt= MathAbs (lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)               // Если свободных средств больше, чем цена позиции - 
      {
         return (ltcorr);                                                         // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)         // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr= MathAbs ( MathFloor (TradeMrg/OneLot/StpLot)*StpLot);               // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print ( "Func CorrectLots: лот " ,lt, " скорректирован до " ,ltcorr,
               " Стоимость позы до корректировки = " ,Money,
               " Стоимость позы после корректировки = " ,MoneyCorr
               ); 
         return (ltcorr);                                                         // ... и вернём его значение
      }
   Print ( "Func CorrectLots: лот вернули без изменений" );
   return (ltcorr);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

Bir soru...

Hitler'in savaşın sonunda yaptığı gibi neden ticarete ihtiyacınız var ... Çocukları Hitler Gençliğine dahil etti, tabiri caizse, bir Faust kartuşunun bir atış için et ...

Bana hiçbir şeyi hatırlatmıyor?????

IMHO tabii ki...

 
artmedia70 :
Sana bir yem vereyim... :)
Aşağıdaki fonksiyon, ihtiyacınız olan parametreleri hesaplamak için tüm verilere sahiptir. O kadar tembeldim ki tuşlara bile bastım...

İhtiyacınız olanı kendiniz bulacak ve kendiniz için yeniden oluşturacaksınız... Kodun kendisi o kadar basit ve erişilebilir ki, yeniden yapmak hiç kimse için zor olmayacak...

Bir soru...

Hitler'in savaşın sonunda yaptığı gibi neden ticarete ihtiyacınız var ... Çocukları Hitler Gençliğine dahil etti, tabiri caizse, bir Faust kartuşunun bir atış için et ...

Bana hiçbir şeyi hatırlatmıyor?????

IMHO tabii ki...


Teşekkür ederim!

Maksimum hacimle açmayacağım, sadece daha fazla matematiksel işlem için Deponun boyutuna göre hesaplamam gerekiyor =))

 
Noterday :

Teşekkür ederim!

Maksimum hacimle açmayacağım, daha fazla matematiksel işlem için Deponun boyutuna göre hesaplamam gerekiyor =))



satın almak için:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2));

satılık:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2));

lot - siparişin hacminin bulunduğu bir değişken

hesaplamanın sonucu >0 için kontrol edilmelidir

https://www.mql5.com/ru/search

 
IgorM :


satın almak için:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2));

satılık:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2));

lot - siparişin hacminin bulunduğu bir değişken

https://www.mql5.com/ru/search

... peki, sen, Igor, acelen var ... :)

Parmaklarımı klavyeye taşımak için zamanım olmadı ve sen zaten abonelikten çıktın ... :)

 
Herkese teşekkürler!
 

Hey!

bana kodu veya dalı söyleyin , gösterge çizgisinin fiyatla kesişimini nasıl hatırlayacağımı. Bir yerde görmüştüm ama bulamıyorum. Şimdiden teşekkürler.

ama ben daha çok şuna benzer bir şeyle ilgileniyorum:

 int start()

  { 

 double LineX = iCustom ( "EURUSD" , Period_H1, "Indicator" , 0 , 0 );

 double lineY = iCustom ( "EURUSD" , Period_H1, "Indicator" , 1 , 0 );

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck :

Hey!

bana kodu veya dalı söyleyin, gösterge çizgisinin fiyatla kesişimini nasıl hatırlayacağımı. Bir yerde görmüştüm ama bulamıyorum. Şimdiden teşekkürler.

ama ben daha çok şuna benzer bir şeyle ilgileniyorum:


herhangi bir kesişim, optimal olarak fiyat (Ask/Bid) ile gösterge çizgisi arasındaki fark olarak kabul edilir, yani.

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Fiyat göstergenin üzerinde"); else Comment("Fiyat göstergenin altındadır");

bu değerler arasındaki farkı karşılaştırırsanız, doğru bir karşılaştırma için değerleri normalleştirme ihtiyacından hemen kurtulursunuz.

Özellikle, sorunuzla ilgili olarak - gösterge çizgisini geçen fiyat, son hesaplamadaki Ask- -iCustom() farkının sıfırdan küçük olduğu ve ardından daha büyük olduğu veya tam tersi olduğu andır.

bu anı nasıl hesaplayacağınız kendi işiniz - belki bir önceki çubukla veya her bir onay işaretiyle, ancak işte kombinasyonlar:

 double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
İstenen sonucu elde ettiğinizden daha hızlı bir şekilde ayrık matematiğin vahşi dünyasına yönlendirileceksiniz - parantez içindeki ifade 0 veya 1'e eşit olacaktır, bu da yanlış ve doğrunun sayısal temsiline karşılık gelir.
 
IgorM :


herhangi bir kesişim, optimal olarak fiyat (Ask/Bid) ile gösterge çizgisi arasındaki fark olarak kabul edilir, yani.

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("Fiyat göstergenin üzerinde"); else Comment("Fiyat göstergenin altındadır");

bu değerler arasındaki farkı karşılaştırırsanız, doğru bir karşılaştırma için değerleri normalleştirme ihtiyacından hemen kurtulursunuz.

Özellikle, sorunuzla ilgili olarak - gösterge çizgisini geçen fiyat, son hesaplamadaki Ask- -iCustom() farkının sıfırdan küçük olduğu ve ardından daha büyük olduğu veya tam tersi olduğu andır.

bu anı nasıl hesaplayacağınız kendi işiniz - belki bir önceki çubukla veya her bir onay işaretiyle, ancak işte kombinasyonlar:

İstenen sonucu elde ettiğinizden daha hızlı bir şekilde ayrık matematiğin vahşi dünyasına yönlendirileceksiniz - parantez içindeki ifade 0 veya 1'e eşit olacaktır, bu da yanlış ve doğrunun sayısal temsiline karşılık gelir.

Yani, eğer doğru anladıysam, şunu yapabilirim:

 bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if   (Ask- iCustom ( "EURUSD" , Period_H1, "Indicator" , 0 , 0 ) == 0 )  {
intersectionX = TRUE;
intersectionY = FALSE;
}
i f   ( iCustom ( "EURUSD" , Period_H1, "Indicator" , 1 , 0 )-Bid == 0 ) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?