Ücretsiz bir danışman yazacağım - sayfa 161

 

Herkese merhaba! Mevcut fiyata bağlanması ile 2 ışın üzerine kimler indikatör yazabilecek?

genel olarak: fiyattan (Teklif ve Satış) N uzaklıkta, biri aşağıda, diğeri yukarıda olmak üzere iki yatay kiriş yerleştirilir. Ve hepsi bu kadar) Işınlar her işaretle yeniden çizilir ve şöyle denebilir: fiyatı takip ederler. mesafe gösterge ayarlarında ayarlanabilir. Teşekkür ederim!

 
Radmir Serebrennikov # :

Herkese merhaba! Mevcut fiyata bağlanması ile 2 ışın üzerine kimler indikatör yazabilecek?

genel olarak: fiyattan (Teklif ve Satış) N uzaklıkta, biri aşağıda, diğeri yukarıda olmak üzere iki yatay kiriş yerleştirilir. Ve hepsi bu kadar) Işınlar her işaretle yeniden çizilir ve şöyle denebilir: fiyatı takip ederler. mesafe gösterge ayarlarında ayarlanabilir. Teşekkür ederim!

Kod: Dinamik Yüksek ve Düşük

Dinamik yüksek ve düşük

Pirinç. 1. Dinamik yüksek ve düşük

Dynamic High and Low
Dynamic High and Low
  • www.mql5.com
Индикатор без индикаторных буферов - просто две линии на постоянном расстоянии от цены
 
Vladimir Karputov # :

Kod: Dinamik Yüksek ve Düşük


Pirinç. 1. Dinamik yüksek ve düşük

ÇOK TEŞEKKÜRLER!!!
 
Birisi MT5'te çalıştırdıktan sonra bir bdb çubuğu ile mevcut araçların bir listesini verecek bir ekran yazabilir mi? Bir öncekinin altında düşük ve üst %30'da kapanan ve tam tersi, yukarıda ve alt %30'da kapanan Bdb çubuğu, tersine çevirme olarak da bilinir. Yaklaşık 3 bin araç.
 
Havai fişek! dosyadaki verilere göre işlem yapma ihtiyacı doğdu. Hatta çift alan bir bot, bir dosyadan yön, lot riskleri hesaplıyor.. Aradım, bulamadım. belki birinin benzer bir şeyi vardır? şey bence çok basit
 
Merhaba. Yeni yılınız kutlu olsun! Lütfen MQL5'e komutlar eklememe yardım edin, böylece sinyal = "al" tüm satış pozisyonları kapatılır ve bunun tersi, sinyal = "sat" olduğunda tüm alım pozisyonları kapatılır. Şimdiden teşekkürler.
 
Namiq Acalov # :
Merhaba. Yeni yılınız kutlu olsun! Lütfen MQL5'e komutlar eklememe yardım edin, böylece sinyal = "al" tüm satış pozisyonları kapatılır ve bunun tersi, sinyal = "sat" olduğunda tüm alım pozisyonları kapatılır. Şimdiden teşekkürler.

Bir EA oluşturmak için Neredeyse Oluşturucu makalesini kullanın - ' InpCloseOpposite ' parametresinin ' true ' olarak ayarlanması gerekir

 input group             "Additional features"

*** 
input bool                 InpCloseOpposite        = true;          // Positions: Close opposite

*** 
Почти конструктор для создания советника
Почти конструктор для создания советника
  • www.mql5.com
Предлагаю свой набор торговых функций в виде готового советника. Представленный способ позволяет получать множество торговых стратегий простым добавлением индикаторов и изменением входных параметров.
 
Vladimir Karputov # :

Bir EA oluşturmak için Neredeyse Oluşturucu makalesini kullanın - ' InpCloseOpposite ' parametresinin ' true ' olarak ayarlanması gerekir

teşekkür ederim Vladimir zaten okuyorum
 

İyi akşamlar sevgili ustalar. Lütfen ızgaradaki ilk siparişin parti büyüklüğünü nasıl bulacağımı söyler misiniz?

ve ikinci soru, bilgi paneli için maksimum düşüm değerinin nasıl sabitleneceğidir (Düşümün kendisini hesaplıyorum, ancak yüzüyor, ondan maksimum değer nasıl elde edilir)

Çok fazla tekme atmamanızı rica ediyorum, örneklerle MQL4 çalışıyorum ve deneme yöntemiyle bu iki pozisyonda çıkmaza girdim (

 
Namiq Acalov # :
Merhaba. Yeni yılınız kutlu olsun! Lütfen MQL5'e komutlar eklememe yardım edin, böylece sinyal = "al" tüm satış pozisyonları kapatılır ve bunun tersi, sinyal = "sat" olduğunda tüm alım pozisyonları kapatılır. Şimdiden teşekkürler.

İşlev Vladimir Karputov'un kodundan alınmıştır.

 //+------------------------------------------------------------------+
//|                                                ClosePosition.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//---
#define   InpMagic   0
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
//---
CTrade            m_trade;                       // trading object
CSymbolInfo       m_symbol;                     // symbol info object
CPositionInfo     m_position;                   // trade position object
CAccountInfo      m_account;                     // account info wrapper
//---
input double InpLots          = 0.1 ; // Lots
input int     InpTakeProfit    = 50 ;   // Take Profit (in pips)
//---
double             m_adjusted_point;             // point value adjusted for 3 or 5 points
double             m_take_profit= 0.0 ;
//---
string m_name[]= { "Buy" , "Sell" , "CloseBuy" , "CloseSell" };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- initialize common information
   m_symbol.Name( Symbol ());                   // symbol
   m_trade.SetExpertMagicNumber(InpMagic); // magic
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol( Symbol ());
//--- tuning for 3 or 5 digits
   int digits_adjust= 1 ;
   if (m_symbol. Digits ()== 3 || m_symbol. Digits ()== 5 )
      digits_adjust= 10 ;
   m_adjusted_point=m_symbol. Point ()*digits_adjust;
//--- set default deviation for trading in adjusted points
   m_take_profit     =InpTakeProfit*m_adjusted_point;
//--- set default deviation for trading in adjusted points
   m_trade.SetDeviationInPoints( 3 *digits_adjust);
//---
   int u= 15 ;
   for ( int y= 0 ; y< ArraySize (m_name); y++)
     {
      ButtonCreate(m_name[y], 5 ,u, 170 , 15 , 8 );
      u=u+ 17 ;
     }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   for ( int y= 0 ; y< ArraySize (m_name); y++)
     {
       ObjectDelete ( 0 , Symbol ()+m_name[y]);
     }
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (!RefreshRates())
       return ;
   if ( ObjectGetInteger ( 0 , Symbol ()+ "Buy" , OBJPROP_STATE )!= 0 )
     {
       ObjectSetInteger ( 0 , Symbol ()+ "Buy" , OBJPROP_STATE , 0 );
       double priceAsk=m_symbol.Ask();
       double tpAsk   =m_symbol.Bid()+m_take_profit;
       //--- check for free money
       if (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_BUY ,InpLots,priceAsk)< 0.0 )
         printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin());
       else
        {
         //--- open position
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,InpLots,priceAsk, 0.0 ,tpAsk))
             printf ( "Position by %s to be opened" , Symbol ());
         else
           {
             printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment());
             printf ( "Open parameters : price=%f,TP=%f" ,priceAsk,tpAsk);
           }
        }
     }
   if ( ObjectGetInteger ( 0 , Symbol ()+ "Sell" , OBJPROP_STATE )!= 0 )
     {
       ObjectSetInteger ( 0 , Symbol ()+ "Sell" , OBJPROP_STATE , 0 );
       double priceBid=m_symbol.Bid();
       double tpBid   =m_symbol.Ask()-m_take_profit;
       //--- check for free money
       if (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_SELL ,InpLots,priceBid)< 0.0 )
         printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin());
       else
        {
         //--- open position
         if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,InpLots,priceBid, 0.0 ,tpBid))
             printf ( "Position by %s to be opened" , Symbol ());
         else
           {
             printf ( "Error opening SELL position by %s : '%s'" , Symbol (),m_trade.ResultComment());
             printf ( "Open parameters : price=%f,TP=%f" ,priceBid,tpBid);
           }
        }
     }
   if ( ObjectGetInteger ( 0 , Symbol ()+ "CloseBuy" , OBJPROP_STATE )!= 0 )
     {
       ObjectSetInteger ( 0 , Symbol ()+ "CloseBuy" , OBJPROP_STATE , 0 );
      ClosePositions( POSITION_TYPE_BUY );
     }
   if ( ObjectGetInteger ( 0 , Symbol ()+ "CloseSell" , OBJPROP_STATE )!= 0 )
     {
       ObjectSetInteger ( 0 , Symbol ()+ "CloseSell" , OBJPROP_STATE , 0 );
      ClosePositions( POSITION_TYPE_SELL );
     }
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates( void )
  {
//--- refresh rates
   if (!m_symbol.RefreshRates())
     {
       Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "RefreshRates error" );
       return ( false );
     }
//--- protection against the return value of "zero"
   if (m_symbol.Ask()== 0 || m_symbol.Bid()== 0 )
     {
       Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "Ask == 0.0 OR Bid == 0.0" );
       return ( false );
     }
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//| Close positions                                                  |
//+------------------------------------------------------------------+
void ClosePositions( const ENUM_POSITION_TYPE pos_type)
  {
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of current positions
       if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if (m_position. Symbol ()==m_symbol.Name() && m_position.Magic()==InpMagic)
             if (m_position.PositionType()==pos_type)
              {
               if (m_position.PositionType()== POSITION_TYPE_BUY )
                 {
                   if (!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol
                     Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "BUY PositionClose " ,m_position.Ticket(), ", " ,m_trade.ResultRetcodeDescription());
                 }
               if (m_position.PositionType()== POSITION_TYPE_SELL )
                 {
                   if (!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol
                     Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "SELL PositionClose " ,m_position.Ticket(), ", " ,m_trade.ResultRetcodeDescription());
                 }
              }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ButtonCreate( string name, int Xdist, int Ydist, int Xsize, int Ysize, int FONTSIZE= 12 )
  {
   if ( ObjectFind ( 0 , Symbol ()+name)< 0 )
       ObjectCreate ( 0 , Symbol ()+name, OBJ_BUTTON , 0 , 100 , 100 );
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_COLOR , clrWhite );
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_BGCOLOR , clrDimGray );
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_XDISTANCE ,Xdist);
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_YDISTANCE ,Ydist);
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_XSIZE ,Xsize);
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_YSIZE ,Ysize);
   ObjectSetString ( 0 , Symbol ()+name, OBJPROP_FONT , "Sans Serif" );
   ObjectSetString ( 0 , Symbol ()+name, OBJPROP_TEXT ,name);
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_FONTSIZE ,FONTSIZE);
   ObjectSetInteger ( 0 , Symbol ()+name, OBJPROP_SELECTABLE , false );
  }
//+------------------------------------------------------------------+