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

 
Valeriy Yastremskiy # :
Algoritma dokundu / geçti - taşınan uymuyor mu?

Zor, uygun bir şey teslim etmem gerekecek. Seviyelerin basit görselleştirilmesinden ve durakların önceki seviyelere aktarılmasından memnun, bu yeterli. Böyle bir hile beklemiyordum. Uzun bir süre ortadan kaybolmamış olsaydı, yapardım ama şimdi değil. Ben tahkim istemiyorum, bu yüzden zaten var.

 

step:=:const ise, o zaman sadece mevcut stoploss'tan verilen adımla seviyeleri görüntüleyin. Peki, daha kolay ne olabilir.

 
Maxim Kuznetsov # :

step:=:const ise, o zaman sadece mevcut stoploss'tan verilen adımla seviyeleri görüntüleyin. Peki, daha kolay ne olabilir.

Evet, algoritmayı anlıyorum. Bir pencere aç, neler olduğunu yaz? Biraz araştırmak ve yazmak için bu koşullar değil.

PS Diğer senaryolarda sormazdım.

 
Kimin bildiğini söyle, demo versiyonunda sipariş açamıyorum, genel bir hata sıraya alınmış diyor! Sorun nedir?
 
Maxim Kuznetsov # :

büyük olasılıkla - ex4 eski derleyici tarafından derlenmiştir. Terminal güncellendi ve danışman eski-druevny. Yazarla iletişime geçmeniz gerekiyor

ikinci seçenek - imzalar aynı fikirde değildi (veya teknik nedenlerle onaylanmadı). Burada sadece her türlü DNS güncellenene ve bağlantı kurulana kadar beklemeniz gerekiyor.

Varsayımsal seçenek - yazar ebedi yasağın altına girdi. Profiline göz atın

özetlemek gerekirse: önce YAZARA SORU SORMANIZ GEREKİR

teşekkürler

 
Vitaly Muzichenko # :

Zor, uygun bir şey teslim etmem gerekecek. Seviyelerin basit görselleştirilmesinden ve durakların önceki seviyelere aktarılmasından memnun, bu yeterli. Böyle bir hile beklemiyordum. Uzun bir süre ortadan kaybolmamış olsaydı, yapardım ama şimdi değil. Tahkim arzu edilmez, bu yüzden zaten var.

OnInit seviye hesaplama ve çiziminde. Farklı bir görev için, ancak yakınlarda. Ultimate seviyeleri için sizin rolünüz.

PS, elbette fazla bir şeyim yok. Emirlerin, pozisyonların ve takiplerin nasıl takip edildiğini anlamanız gerekir, çizmek kolaydır. ancak seviyeye ulaştığınızda, seviyenin rengini değiştirmeniz veya yatay çizgiyi kaldırmanız gerekir.
Dosyalar:
 
Valeriy Yastremskiy # :

OnInit seviye hesaplama ve çiziminde. Farklı bir görev için, ancak yakınlarda. Ultimate seviyeleri için sizin rolünüz.

PS, elbette fazla bir şeyim yok. Emirlerin, pozisyonların ve takiplerin nasıl takip edildiğini anlamanız gerekir, çizmek kolaydır. ancak seviyeye ulaştığınızda, seviyenin rengini değiştirmeniz veya yatay çizgiyi kaldırmanız gerekir.

Ne yapabilirim))) çapraz işleve tetikleyici bayraklar eklemeniz gerekir. başaramıyorum.

 input double    PriceOrder= 0.0 ;         // Цена ордера, 
input int TralStep= 300 ;                   // Шаг отслеживания SL  
input int NumberLevels= 7 ;             // Kоличество уровней для выбранного метода ВВЕРХ

input bool FlagShowLine= true ;               // Рисовать / не рисовать уровни



//---


double LevelPrice[ 10 ];                 // Количество уровней не более 10.
string HLineName[ 10 ];
bool Del= true ;

string MsgAlert,Tip;

int CurLevel;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---Расчет ценовых уровней

CalculationOfLevels(PriceOrder,TralStep,NumberLevels,Tip);



if (FlagShowLine)
{
ShowLine(Tip);
}
//--- create timer
   EventSetTimer ( 60 );
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
  
   Comment ( "" );
  
   int obj_total= ObjectsTotal ();
       PrintFormat ( "Всего %d объектов" ,obj_total);
       for ( int i=obj_total- 1 ; i>= 0 ; i--)
        {
         string name= ObjectName (i);
 //        PrintFormat("Объект %d: %s",i,name);
         ObjectDelete (name);
        }
//--- destroy timer
   EventKillTimer ();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   CrossingLevel(CurLevel,Tip);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester ()
  {
//---
   double ret= 0.0 ;
//---

//---
   return (ret);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLineCreate( const long             chart_ID= 0 ,         // ID графика 
                 const string           name= "HLine" ,       // имя линии 
                 const int              sub_window= 0 ,       // номер подокна 
                 double                 price= 0 ,           // цена линии 
                 const color            clr= clrRed ,         // цвет линии 
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линии 
                 const int              width= 1 ,           // толщина линии 
                 const bool             back= true ,         // на заднем плане 
                 const bool             selection= false ,     // выделить для перемещений 
                 const bool             hidden= false ,       // скрыт в списке объектов 
                 const long             z_order= 0 )         // приоритет на нажатие мышью 
  { 
//--- если цена не задана, то установим ее на уровне текущей цены Bid 
   if (!price) 
      price= SymbolInfoDouble ( Symbol (), SYMBOL_BID ); 
//--- сбросим значение ошибки 
   ResetLastError (); 
//--- создадим горизонтальную линию 
   if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price)) 
     { 
       Print ( __FUNCTION__ , 
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ()); 
       return ( false ); 
     } 
//--- установим цвет линии 
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr); 
//--- установим стиль отображения линии 
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style); 
//--- установим толщину линии 
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back); 
//--- включим (true) или отключим (false) режим перемещения линии мышью 
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект 
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection 
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект 
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection); 
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection); 
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden); 
//--- установим приоритет на получение события нажатия мыши на графике 
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order); 
//--- успешное выполнение 
   return ( true ); 
  } 
  
   //+------------------------------------------------------------------+
   //| Поиск ближайших уровней                                          |
   //+------------------------------------------------------------------+  
void   ShowModify( string name, string tip, bool del)
  {
   if (del){
ObjectDelete (name);
  }
   if (!del){
 if (tip== "Sell" ){
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrGold );
 } 
   if (tip== "Buy" ){
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrCoral );
 } 
 }
 }
 
 //+------------------------------------------------------------------+
 //| Мониторинг пересечения уровней                                   |
 //+------------------------------------------------------------------+
 
bool CrossingLevel( int level, string tip)
{
if ((tip== "Buy" && Bid > LevelPrice[level]) || (tip== "Sell" && Ask < LevelPrice[level])){
CurLevel=level++ ;
return ( true );
}
return ( false );
}



void CalculationOfLevels( double priceorder, int trstep, int numberl, string tip){

//---Расчет ценовых уровней

for ( int i= 0 ; i<=(numberl); i++){
if (tip== "Buy" ){
LevelPrice[i] =  priceorder + trstep* Point ;
if (tip== "Sell" ){
LevelPrice[i] =  priceorder - trstep* Point ;

}
}
CurLevel= 1 ;
}
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ShowLine( string tip)
{
color ClrLine= clrRed ;
if (tip== "Buy" ) ClrLine= clrBlue ;
if (tip== "Sell" ) ClrLine= clrRed ;
for ( int i= 0 ;i<=(NumberLevels);i++){

//Alert("ShowLine_",ShowLine,"__",LevelPrice[i],"__",ClrLine);
HLineName[i]= "LevelPrice_" +( string )i+ "_" +( string )LevelPrice[i];

HLineCreate( 0 ,HLineName[i], 0 ,LevelPrice[i],( color )ClrLine, STYLE_SOLID , 1 );
}
}
Dosyalar:
ShowLevel.mq4  16 kb
 
Valeriy Yastremskiy # :

Ne yapabilirim))) çapraz işleve tetikleyici bayraklar eklemeniz gerekir. başaramıyorum.

Biraz hiç değil.

Uzun zaman önce böyle bir şey yazmıştım ama bu, pozisyonların nerede açılacağını gösteren bir danışman.


Şimdi trolün çalışacağı yere bu tür çizgilerin çizilmesi için trol koduna bir ekleme yapmamız gerekiyor.

Görev, takip eden Expert Advisor'ın bir çizelgeye kurulu olması ve açık pozisyonların olduğu tüm çizelgelerde çizgilerin gösterilmesi gerektiği gerçeğiyle karmaşıktır.

Dosyalar:
 
Vitaly Muzichenko # :

Biraz hiç değil.

Uzun zaman önce böyle bir şey yazmıştım ama bu, pozisyonların nerede açılacağını gösteren bir danışman.


Şimdi trolün çalışacağı yere bu tür çizgilerin çizilmesi için trol koduna bir ekleme yapmamız gerekiyor.

Görev, takip eden Expert Advisor'ın bir çizelgeye kurulu olması ve açık pozisyonların olduğu tüm çizelgelerde çizgilerin gösterilmesi gerektiği gerçeğiyle karmaşıktır.

Tüm pencereler zaten açık mı, yoksa danışman tarafından pozisyonlar göründüğünde mi açılıyor? Görev bir grafik bulmaktır)
 
Valeriy Yastremskiy # :
Tüm pencereler zaten açık mı, yoksa danışman tarafından pozisyonlar göründüğünde mi açılıyor? Görev bir grafik bulmaktır)

Bir pozisyon varsa, o zaman pencerenin açık olduğuna inanıyorum.