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

 
neverness :

En basit görevi zaten tanımladım.

MetaEditor'u açın.

Dosya->Oluştur düğmesini tıklayın.

Açılır alanda Gösterge'yi seçin.

...

Ancak MQL tercümanı böyle bir kodu hiçbir şekilde algılamaz.

Yaklaşık 20 dakika içinde cevap vereceğim.

 
neverness :

Gerçekten çocuklar gibi suyu mu bulandırıyorsunuz?

Evet kimse dalga geçmiyor. Sonunda durum biraz netleşmeye başlıyor. Bir komut dosyasını ana kodun gövdesine yerleştirilemeyen bir işlev olarak adlandırdığınız ortaya çıktı.

MT'nin üçüncü şahısların tecavüzlerinden korunması gereken parayla çalışmak üzere tasarlandığı unutulmamalıdır. Bu nedenle, dilin sınırlamalarının çoğu.

hiçlik :

En basit görevi zaten tanımladım.

MetaEditor'u açın.

Dosya->Oluştur düğmesini tıklayın.

Açılır alanda Gösterge'yi seçin.

Ve OnCalculate() gösterge alanında, herhangi bir script nesnesini OnStart() olayıyla gömdük.

Şahsen, nasıl yapacağımı bilmiyorum. Peki, örneğin şöyle:

int OnCalculate(const int oranları_toplam,
const int önceki_hesaplanmış,
const tarihsaat &saat[],
const double &aç[],
const çift &yüksek[],
const çift &düşük[],
const double &kapat[],
const uzun &tick_volume[],
const uzun &hacim[],
const int &spread[])
{
//---
for(int i = 1; ben < 100;i++)

{

if(open[i] > Maks)

{

OnStart()

Ve burada, ilgilendiğimiz nesneyi oluşturmak için bir senaryo yazıyoruz. Örneğin, bir elips veya bir grafikteki harfler veya başka bir şey

} //eğer(aç)

} //for(int i)
//--- sonraki çağrı için prev_hesaplananın dönüş değeri
dönüş(oranlar_toplam);
} // Hesapla

Bunun gibi bir şey, muhtemelen, böyle görünmelidir.

Ancak MQL tercümanı böyle bir kodu hiçbir şekilde algılamaz.

Bunun gibi bir şeye benzemeli

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
for ( int i = 1 ; i < 100 ;i++)
      {
       if (open[i] > Max)
            {
            
           if ( int    ObjectFind (chart_id, /* идентификатор графика */ object_name /* имя объекта */) < 0)
             ObjectCreate (Здесь параметры функции согласно документации.
                         Например, эллипса, или буквы на графике, или еще чего-нибудь);
               
            }   //if(open)
      }   //for(int i)  
//--- return value of prev_calculated for next call
   return (rates_total);
  } // OnCalculate
 
Vitaly Muzichenko :

Yaklaşık 20 dakika içinde cevap vereceğim.

Videonun yüklenmesi uzun sürdü - 40 dakikadan fazla.


 //+------------------------------------------------------------------+
//|                                                          Set.mq5 |
//|                                                   Copyright 2018 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018"
#property version    "1.00"
#property indicator_chart_window
#property indicator_plots 0

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
 {
  EllipseCreate( 0 , "Ellipse" , 0 , 0 , 0 , 0 , 0 , 0 , 0 , clrRed , STYLE_SOLID , 1 , true , true );
//--- indicator buffers mapping
   return ( INIT_SUCCEEDED );

 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
 ArraySetAsSeries (time, true );
 ArraySetAsSeries (open, true );
 // ....
   ObjectMove ( 0 , "Ellipse" , 0 ,time[ 1 ],open[ 5 ]);
   ObjectMove ( 0 , "Ellipse" , 1 ,time[ 10 ],open[ 15 ]);
   ObjectMove ( 0 , "Ellipse" , 2 ,time[ 20 ],open[ 25 ]);
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

bool EllipseCreate( const long             chart_ID= 0 ,         // ID графика 
                   const string           name= "Ellipse" ,     // имя эллипса 
                   const int              sub_window= 0 ,       // номер подокна  
                   datetime               time1= 0 ,           // время первой точки 
                   double                 price1= 0 ,           // цена первой точки 
                   datetime               time2= 0 ,           // время второй точки 
                   double                 price2= 0 ,           // цена второй точки 
                   datetime               time3= 0 ,           // время третьей точки 
                   double                 price3= 0 ,           // цена третьей точки 
                   const color            clr= clrRed ,         // цвет эллипса 
                   const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линий эллипса 
                   const int              width= 1 ,           // толщина линий эллипса 
                   const bool             fill= false ,         // заливка эллипса цветом 
                   const bool             back= false ,         // на заднем плане 
                   const bool             selection= true ,     // выделить для перемещений 
                   const bool             hidden= true ,       // скрыт в списке объектов 
                   const long             z_order= 0 )         // приоритет на нажатие мышью 
  { 
//--- установим координаты точек привязки, если они не заданы 
   // ChangeEllipseEmptyPoints(time1,price1,time2,price2,time3,price3); 
//--- сбросим значение ошибки 
   ResetLastError (); 
//--- создадим эллипс по заданным координатам 
   if (! ObjectCreate (chart_ID,name, OBJ_ELLIPSE ,sub_window,time1,price1,time2,price2,time3,price3)) 
     { 
       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); 
//--- включим (true) или отключим (false) режим заливки эллипса 
   ObjectSetInteger (chart_ID,name, OBJPROP_FILL ,fill); 
//--- отобразим на переднем (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 ); 
  } 
Dosyalar:
Set.mq5  10 kb
 
Vitaly Muzichenko :

Videonun yüklenmesi uzun sürdü - 40 dakikadan fazla.

Ayrıca bazen forumun bölümlerini karıştırıyorum ve mql4 ile ilgili bir soruya mql5'te cevap yazıyorum.

Prensip olarak, bu durumda dosya uzantısı dışında hiçbir şey değişmeyecek, ancak mql4'te gereksiz olacaktır.

 ArraySetAsSeries (time, true );
 ArraySetAsSeries (open, true );

ve hatta tamamen gereksiz ve işe yaramaz.

 
neverness :

Gerçekten çocuklar gibi suyu mu bulandırıyorsunuz?

Sadece MetaEditor'a gidin ve şu komutu yazın: Dosya->Yeni...

Sonuç olarak, farklı boşluklara sahip bir form açılacaktır.

Özellikle, bunlar boşluklar olacaktır:

- Danışman

- Özel gösterge

- Senaryo

- Kütüphane vb.

İlk üç öğeyle ilgileniyoruz: Uzman Danışman, Özel Gösterge ve Komut Dosyası.

Bu boşlukları karşılaştıralım:

EA'da etkinliklerimiz var:

-OnInit(), OnDeinit(), OnTick(), OnTimer, OnChartEvent() ... bu kadar, artık yok.

komut dosyasında etkinliklerimiz var:

- OnStart() ... bu kadar, artık yok.

göstergede etkinliklerimiz var:

- OnInit(), OnCalculate(), OnTimer, OnChartEvent() … bu kadar, artık yok.

Burada bu nesneler arasında nasıl iletişim kurulacağı sorusu oldukça doğaldır.

MQL'de aralarında hiçbir bağlantı olmadığı ve olamayacağı ortaya çıkıyor, çünkü bu nesneler arasındaki veri akışları tamamen ayrılmış ve aralarında hiçbir bağlantı yok.

Ayrıca, MQL'nin yaratıcılarının bu gerçeği bize "iyi" olarak vermelerine şaşırdım.

Ve örneğin, C ++ çerçevesinde, Temel çevirmeni veya JavaScript'i veya başka herhangi birini güvenle arayabilir ve örneğin Android programlama ortamına gidebilirsem,

o zaman MQL çerçevesinde, gösterge ortamı OnStart() komutunu kabul etmediğinden, "gösterge" ortamında "komut dosyası" denilen bir şeyi oluşturma fırsatım bile yok.

Bu nasıl bir çirkinlik???

Ve MQL'de bu tür canavarlıklar fazlasıyla var.

Onlar her fırsatta.

MQL'nin açıklamasını okudum - ve şaşırdım çünkü yapacak bir şey kalmadı.

Ve aynı zamanda, MQL'nin yaratıcıları, MQL'nin C ++'ın varisi olduğunu yüksek sesle ilan ediyor.

Elbette özür dilerim ama MQL'nin yaratıcılarına sormak istiyorum: - Mirasçı nedir? - Deformitelerde mi?


İstemsizce MQL'yi iyi bilinen 1C programlama ortamıyla karşılaştırırım. Ayrıca C++'ın mirasçıları olduklarını iddia ediyorlar.

Ama orada her şey çok daha terbiyeli yapılır.

Ve grafik nesneleri ve modüller arasındaki iletişim ve çok daha fazlası.

MQL'de ne olacak?

Yerleşik sınıf yok, iş parçacığıyla ilgili nesneler yok ... ve hiçbir şey yok.

Ve henüz terminalin matematiksel kabuğu hakkında hiçbir şey söylemedim !!!

Bu genellikle sürprizler için ayrı bir konudur!

Yardımı biraz okuyalım, sahip olmadığınızı söylediğiniz her şeyi bulalım , Güvenlik Konseyi'ndeki yerleşik sınıfları okuyalım, kibarca nasıl yardım isteyeceğinizi öğrenelim (yardım istediniz), öğrenmemeyi öğrenin. size yardım etmeye çalışan insanlara kaba davranmak ( not - ilgisizce) ...

Genel olarak, trollük, kabalık ve yalvarmaktan bir gün yasaklanacaksınız (tüm ifadelerinizi kanıtlamak için kodunuzun tek bir satırını göstermediniz, ancak sorunuza cevap veren kişilerden kategorik olarak talep ediyorsunuz ve ifadeler size sağlamak için. ihtiyaçlarınız için çalışan bir kodla - burada böyle değil - burada yardımcı oluyorlar, ancak sizin için yapmıyorlar, not ediyorum - en basit kod)

Alınma - bize hiçbir şey olmadan kim gelirse, ne olduğunu anlamayacak ve ölecek

Özellikle de ısıyı kısman için seni uyardığımdan beri:

 

macos'ta mt4 nasıl kurulur yardım edin lütfen!

 

Sadece sanal makinede. Pahalı ama kullanışlı ve güvenilir bir paralelim var.

https://www.parallels.com/en/products/desktop/

Запуск Windows на Mac — виртуальная машина Parallels Desktop 14 для Mac
  • www.parallels.com
Можно запустить Windows параллельно с macOS® (перезагрузка не требуется) на компьютерах MacBook®, MacBook Pro®, iMac®, iMac Pro®, Mac mini® или Mac Pro®. Предоставляйте общий доступ к файлам и папкам, копируйте и вставляйте текст и изображения, перетаскивайте файлы между приложениями Mac и Windows. Удобная настройка Parallels Desktop...
 

Lütfen yardım et. Sorular:

1. Program, test modunda alım veya satım için zarar durdurma ayarlamaz. Ancak bekleyen geçişlerdeki siparişlerin değiştirilmesi.

2. Gerçek zamanlı bir hesapta çalışmaz.

Bana yardım et lütfen.

Ve programı yazarken yapılan tüm hataları belirtmenizi rica ediyorum.

Şimdiden teşekkürler.

Program kodu:

.input int Yüzde=50;

giriş int MAGICNUMBER=413;

//Uzun vadeli çizelgeler için gösterge ve osilatör sabitlerinin parametreleri

girdi int Signal_Period_long_term=6;

input int Fast_EMA_Period_long_term=12;

input int Slow_EMA_Period_long_term=24;

//Kısa dönem çizelgeleri için gösterge ve osilatör sabitlerinin parametreleri

input int Stokastik_Kperiod_short_term=5;

input int Stokastik_Dperiod_short_term=3;

input int Stokastik_slowing_short_term=3;

ENUM_TIMEFRAMES PERIODs_short_term=PERIOD_M5 girin;

ENUM_TIMEFRAMES PERIODs_long_term=PERIOD_H1 girin;

//------------------------------------------------ --------------------------------------------

//Ortak değişkenler ve türleri

statik tarihsaat New_Time;// Geçerli çubuğun saati

statik tarihsaat Time_Local;

double Margin_Percent; //Siparişleri açmak için kullanılan araçlar

double Lot;//Toplam lot sayısının belirlenmesi

double Lots_Volume;

//Uzun vadeli grafik için değişkenler ve türleri

çift MacdCurrent_long_term;//mevcut çubuğun ana satırının MACD parametreleri

çift MacdPrevious_long_term;//önceki çubuğun ana satırının MACD parametreleri

double SignalCurrent_long_term;

//Kısa vadeli grafik için değişkenler ve türleri

double Stochastic_Current_short_term_main;//5 dakikalık bir grafikte mevcut çubuğun Stokastik parametreleri

double Stochastic_Previous_short_term_main;//5 dakikalık bir grafikte önceki çubuğun Stokastik parametreleri

double Stochastic_Current_short_term_signal;//5 dakikalık bir grafikte mevcut çubuğun Stokastik parametreleri

double Stochastic_Previous_short_term_signal;//5 dakikalık bir grafikte önceki çubuğun Stokastik parametreleri

çift StopLoss_BUY;

çift StopLoss_SELL;

çift Fiyat_BUY;

çift Fiyat_SELL;

//+------------------------------------------- --------------------+

//| uzman başlatma işlevi |

//+------------------------------------------- --------------------+

int OnInit()

{

//---


//---

dönüş(INIT_SUCCESSED);

}

//+------------------------------------------- --------------------+

//| Uzman başlatmasızlaştırma işlevi |

//+------------------------------------------- --------------------+

geçersiz OnDeinit(const int nedeni)

{

//---


}

//+------------------------------------------- --------------------+

//| Uzman onay işlevi |

//+------------------------------------------- --------------------+

geçersiz OnTick()

{

int bilet,cnt;

int total=OrdersTotal();// Emir Sayısının Belirlenmesi

bool New_Bar=false; // Yeni çubuk bayrağı


//Uzun vadeli grafik için değişkenlerin değerlerinin belirlenmesi

MacdCurrent_long_term=iMACD(NULL,PERIODs_long_term,Fast_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_MAIN,1);

MacdPrevious_long_term=iMACD(NULL,PERIODs_long_term,Hızlı_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_MAIN,2);

SignalCurrent_long_term=iMACD(NULL,PERIODs_long_term,Fast_EMA_Period_long_term,Slow_EMA_Period_long_term,Signal_Period_long_term,PRICE_TYPICAL,MODE_SIGNAL,1);

//Kısa vadeli grafik için değişkenlerin değerlerinin belirlenmesi

Stochastic_Current_short_term_main=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_MAIN,1);

Stochastic_Previous_short_term_main=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_MAIN,2);

Stochastic_Current_short_term_signal=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_SIGNAL,1);

Stochastic_Previous_short_term_signal=iStochastic(NULL,PERIODs_short_term,Stochastic_Kperiod_short_term,Stochastic_Dperiod_short_term,Stochastic_slowing_short_term,MODE_SMA,0,MODE_SIGNAL,2);

//Paylaşılan değişkenleri tanımla

Price_BUY=iHigh(NULL,PERIODs_short_term,1)+MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

Price_SELL=iLow(NULL,PERIODs_short_term,1)-MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

StopLoss_BUY=iLow(NULL,PERIODs_short_term,1)-MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

StopLoss_SELL=iHigh(NULL,PERIODs_short_term,1)+MarketInfo(NULL,MODE_STOPLEVEL)*MarketInfo(NULL,MODE_POINT);

Margin_Percent=HesapFreeMargin()*Yüzde/100;

Lot=NormalizeÇift(Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);

Lots_Volume=NormalizeDouble(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP),2);

//------------------------------------------------ -------------------------------------------------- ---------------------

//----- Yeni bir çubuk tanımlama ------------------------------------------ ------------------------------------------------- -

New_Time=TimeCurrent();

Print("Zaman=",ZamanAkım());

Print("Bar açılış zamanı =",iTime(NULL,PERIODs_short_term,0));

if(iTime(NULL,PERIODs_short_term,0)==New_Time) // Zamanı karşılaştır

{

if(iVolume(NULL,PERIODs_short_term,0)<=2) //Birimi karşılaştırın

Print("Çubuk hacmi =",Hacim[0]);

if(iBarShift(NULL,PERIODs_short_term,TimeCurrent())==0)//Çubuk indeksini kontrol et

Print("Çubuk numarası =",iBarShift(NULL,PERIODs_short_term,TimeCurrent()));

New_Bar=true; // Yeni bir çubuk aldım

Print("Yeni çubuk");

}

else if(New_Bar==false) // Çubuk yeni değilse..

{

Print("Çubuk yeni değil");

dönüş;

}

//---Minimum lotu açmak için fon olup olmadığını kontrol edin

if(Margin_Percent<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT)))

{

Print("Yeterli para yok. Bedava para = ",AccountFreeMargin());

dönüş;

}

//---Lot sayısını belirle

if(Lots>Lots_Volume)

{

Lot=NormalizeÇift(Lots_Volume,2);

Print("Lot Sayısı : ",Lot);

}

else if(Lots<Lots_Volume)

{

Lot=NormalizeDouble(MathFloor(Lot),2);

Print("Lot Sayısı : ",Lot);

}

//+------------------------------------------- --------------------+

//| Sipariş sayısı sıfır olduğunda sipariş açma koşulları |

//+------------------------------------------- --------------------+

if(toplam<1)

{


if(MacdCurrent_long_term<0 && MacdCurrent_long_term>SignalCurrent_long_term)

Print("SATIN ALMAK İÇİN DURUM DOĞRU");

{

//+------------------------------------------- ----------------------------------+

//| Sadece uzun pozisyonlar açma koşulu SATIN AL |

//+------------------------------------------- ----------------------------------+

if(Stochastic_Current_short_term_main<Stochastic_Current_short_term_signal && Stochastic_Previous_short_term_main>=Stochastic_Previous_short_term_signal)

{

bilet=OrderSend(Symbol(),OP_BUYSTOP,Lots,Price_BUY,3,0,0,NULL,MAGICNUMBER,0,Mavi);

if(bilet>0)//konum açıklığı kontrol ediliyor

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

{

Print("SATIN AL emri açıldı : ",OrderOpenPrice());

dönüş;

}

else Print("SATIN AL emri açılırken hata oluştu: ",GetLastError());

dönüş;

}

}

}

if(MacdCurrent_long_term>0 && MacdCurrent_long_term<SignalCurrent_long_term)

Print("SATIŞ için şartlar doğrudur");

{

//+------------------------------------------- ----------------------------------+

//| Sadece kısa pozisyon açma koşulu SATIŞ |

//+------------------------------------------- ----------------------------------+

if(Stochastic_Current_short_term_main>Stochastic_Current_short_term_signal && Stochastic_Previous_short_term_main<=Stochastic_Previous_short_term_signal)

{

bilet=OrderSend(Symbol(),OP_SELLSTOP,Lots,Price_SELL,3,0,0,NULL,MAGICNUMBER,0,Yeşil);

if(bilet>0)//konum açıklığı kontrol ediliyor

{

if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))

{

Print("SAT emri açık : ",OrderOpenPrice());

dönüş;

}

else Print("SATIŞ emrini açarken hata: ",GetLastError());

dönüş;

}

}

}

}


//+------------------------------------------- ----------------------------------+

//| Siparişleri değiştirme koşulları |

//+------------------------------------------- ----------------------------------+


for(cnt=0;cnt<toplam;cnt++)

//+------------------------------------------- --------------------+

//| |

//+------------------------------------------- --------------------+

{

if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

devam etmek;

if(OrderMagicNumber()==MAGICNUMBER && // sipariş sihirli numarası kontrol ediliyor

OrderSymbol()==Symbol()) // sipariş sembolü kontrol ediliyor

{

//--- uzun pozisyon açık

if(OrderType()==OP_BUYSTOP)

{

if(OrderOpenPrice()<Price_BUY && Sor<Price_BUY)

{

if(OrderModify(OrderTicket(),Price_BUY,0,0,0,Mavi))

Print("Fiyat Fiyat_AL emri başarıyla değiştirildi.");

else Print("BUYSt sırasını değiştirirken hata oluştu. Hata kodu=",GetLastError());

dönüş;

}

else Print("Değişiklik fiyatı sipariş fiyatından yüksek");

dönüş;

}

if(OrderType()==OP_SELLSTOP)

{

if(OrderOpenPrice()<Fiyat_SAT && Teklif>Fiyat_SAT)

{

if(OrderModify(OrderTicket(),Price_SELL,0,0,0,Yeşil))

Print("Fiyat Fiyat_SAT emri başarıyla değiştirildi.");

else Print("SELLStop siparişi değiştirilirken hata oluştu. Hata kodu=",GetLastError());

dönüş;

}

}

if(OrderType()==OP_BUY)

{

if(OrderStopLoss()<StopLoss_BUY && StopLoss_BUY<Sor)

{

if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss_BUY,0,0,Mavi))

Print("Fiyat Fiyat_AL emri başarıyla değiştirildi.");

else Print("SATIN AL emri değiştirilirken hata oluştu. Hata kodu=",GetLastError());

dönüş;

}

}

if(OrderType()==OP_SEL)

{

if(OrderStopLoss()>StopLoss_SELL && StopLoss_SELL>Teklif)

{

if(OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss_SELL,0,0,Yeşil))

Print("Fiyat Fiyat_SAT emri başarıyla değiştirildi.");

else Print("SAT emri değiştirilirken hata oluştu. Hata kodu=",GetLastError());

dönüş;

}

}

}

}


}

//+------------------------------------------- --------------------+

 

Göstergedeki hatayı düzeltmeye yardımcı olur, günün en yüksek ve en düşük noktalarını saatin son mumundayken çekmez.

https://prnt.sc/kut6xo

https://prnt.sc/kut79b

Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
Dosyalar:
 
Michail_David :

Lütfen yardım et. Sorular:

1. Program, test modunda alım veya satım için zarar durdurma ayarlamaz. Ancak bekleyen geçişlerdeki siparişlerin değiştirilmesi.

2. Gerçek zamanlı bir hesapta çalışmaz.


Bunun gibi

 if ( OrderType ()== OP_SELL )

           {

             if ( OrderStopLoss () != StopLoss_SELL && StopLoss_SELL> Bid )

VE kodunu değiştirir, doğru şekilde ekler (Alt+S).