MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 121
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Merhaba. Lütfen bana MQL4 danışman kodunda bir emir açmak için böyle bir kuralın nasıl yazılacağını söyleyin, piyasada belirli bir sihirle bir emir olmalı, böyle bir emir yoksa, danışman ana fikrine göre hiçbir şey açmaz. algoritma. bu sihir değişkenlerde kayıtlıdır.
Böyle bir şey mümkündür:
{
Comment ( IsCount( ORDER_TYPE_BUY_STOP , 5 ) ); // type - тип, mg - magic
}
//------- Вернёт количество
int IsCount( int type, int mg) {
int p= 0 ;
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mg) {
if ( OrderType ()==type) {
p++;
}}}}
return (p);
}
Bir diziyi bir kullanıcıyla doldurmak nasıl mümkün olur?
Bir diziyi bir kullanıcıyla doldurmak nasıl mümkün olur?
Selamlar, siparişlerin geçmişini grafik üzerinde çizen bir gösterge var, kod:
//| history.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
extern int MagicNumber = 1110 ;
extern datetime HistoryOrdersFromDateTime = 0 ;
extern color SellColor = clrRed ;
extern color BuyColor = clrBlue ;
extern color ProfitColor = clrWhite ;
extern bool DeleteHistoryOrders = false ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//--- indicator buffers mapping
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
void start()
{
for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && OrderMagicNumber ()==MagicNumber && OrderSymbol ()== Symbol () && OrderType ()<= 1 )
{
if (HistoryOrdersFromDateTime< OrderCloseTime ())
{
if (( TimeCurrent ()- OrderCloseTime ())> 60 )
HistoryOrders();
}
}
}
}
void HistoryOrders()
{
int CountOrders= 0 ;
double b= OrderOpenPrice (), d= OrderClosePrice (), lots= OrderLots (), Profit= 0 ;
datetime a= OrderOpenTime (), c= OrderCloseTime (), close_time;
string Ticket=( string ) OrderTicket (), type= "Sell" , symbol= OrderSymbol (), comment= OrderComment (), Background;
color col=SellColor;
if ( OrderType ()== 0 ) {col=BuyColor; type= "Buy" ;}
//Расчет профита
for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && OrderMagicNumber ()==MagicNumber && OrderSymbol ()== Symbol () && OrderType ()<= 1 )
{
close_time= OrderCloseTime ();
if (c<=close_time+ 60 && c>=close_time- 60 )
{
Profit+= OrderProfit ()+ OrderCommission ()+ OrderSwap ();
Ticket=( string ) OrderTicket ();
}
}
}
//Размер фона
for ( int i= 2 ; i< StringLen ( DoubleToString (Profit, 2 )); i++)
StringAdd (Background, "g" );
if (DeleteHistoryOrders== false )
{
//Начальная точка
ObjectCreate ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ "\n" +comment, OBJ_ARROW , 0 ,a,b);
ObjectSet ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ "\n" +comment, OBJPROP_COLOR ,col);
ObjectSet ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ "\n" +comment, OBJPROP_ARROWCODE , 1 );
//Линия
ObjectCreate ( "#" +Ticket+ " " + DoubleToString (b, Digits )+ " -> " + DoubleToString (d, Digits ), OBJ_TREND , 0 ,a,b,c,d);
ObjectSet ( "#" +Ticket+ " " + DoubleToString (b, Digits )+ " -> " + DoubleToString (d, Digits ), OBJPROP_COLOR ,col);
ObjectSet ( "#" +Ticket+ " " + DoubleToString (b, Digits )+ " -> " + DoubleToString (d, Digits ), OBJPROP_WIDTH , 1 );
ObjectSet ( "#" +Ticket+ " " + DoubleToString (b, Digits )+ " -> " + DoubleToString (d, Digits ), OBJPROP_STYLE , STYLE_DOT );
ObjectSet ( "#" +Ticket+ " " + DoubleToString (b, Digits )+ " -> " + DoubleToString (d, Digits ), OBJPROP_RAY , 0 );
//Конечная точка
ObjectCreate ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ " close at " + DoubleToString (d, Digits ), OBJ_ARROW , 0 ,c,d);
ObjectSet ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ " close at " + DoubleToString (d, Digits ), OBJPROP_COLOR ,col);
ObjectSet ( "#" +Ticket+ " " +type+ " " + DoubleToString (lots, 2 )+ " " +symbol+ " at " + DoubleToString (b, Digits )+ " close at " + DoubleToString (d, Digits ), OBJPROP_ARROWCODE , 3 );
//Фон профита
ObjectCreate ( "#" +Ticket+ " Background" , OBJ_TEXT , 0 ,c,d);
ObjectSet ( "#" +Ticket+ " Background" , OBJPROP_ANCHOR , ANCHOR_LOWER );
ObjectSetText ( "#" +Ticket+ " Background" ,Background, 10 , "Webdings" ,col);
ObjectSet ( "#" +Ticket+ " Background" , OBJPROP_PRICE1 ,d);
ObjectSet ( "#" +Ticket+ " Background" , OBJPROP_TIME1 ,c+ Period ());
//Профит
ObjectCreate ( "#" +Ticket+ " Profit: " + DoubleToString (Profit, 2 ), OBJ_TEXT , 0 ,c,d);
ObjectSet ( "#" +Ticket+ " Profit: " + DoubleToString (Profit, 2 ), OBJPROP_ANCHOR , ANCHOR_LOWER );
ObjectSetText ( "#" +Ticket+ " Profit: " + DoubleToString (Profit, 2 ), DoubleToString (Profit, 2 ), 10 , "Arial" ,ProfitColor);
ObjectSet ( "#" +Ticket+ " Profit: " + DoubleToString (Profit, 2 ), OBJPROP_PRICE1 ,d);
ObjectSet ( "#" +Ticket+ " Profit: " + DoubleToString (Profit, 2 ), OBJPROP_TIME1 ,c+ Period ());
} else ObjectsDeleteAll ( 0 , "#" +Ticket+ " " );
}
void OnDeinit ( const int reason)
{
for ( int i= 0 ; i< OrdersHistoryTotal (); i++)
{
DeleteHistoryOrders= true ;
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ) && OrderMagicNumber ()==MagicNumber && OrderSymbol ()== Symbol ())
HistoryOrders();
}
}
Gösterge tek bir anlaşmayı doğru bir şekilde çizer (çizgi>arka plan>kar), ancak kapalı sipariş ızgaralarının gösteriminde küçük bir "cant" (ekran görüntüsü ekli) vardır, çizgiler arka planda ve kârda üst üste bindirilir (çizgi(1)>arka plan) >kâr>satır(2) >satır(3)>satır(4) . . . ).
Şu şekilde olmalıdır: (line(1)>line(2)>line(3)>line(4) . . . >background>kâr). Tefli çeşitli danslar başarıya yol açmadı, düzeltmeye yardımcı oldu.
Ve kullanıcı dışında kim doldurabilir?
Ayarlardan nasıl doldurulacağından bahsediyorum. Diyelim ki bir dize aracılığıyla ve sonra değerini bir diziye koyalım ...
Ayarlardan nasıl doldurulacağından bahsediyorum. Diyelim ki bir dize aracılığıyla ve sonra değerini bir diziye koyalım ...
Böyle bir şey mümkündür:
{
Comment ( IsCount( ORDER_TYPE_BUY_STOP , 5 ) ); // type - тип, mg - magic
}
//------- Вернёт количество
int IsCount( int type, int mg) {
int p= 0 ;
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mg) {
if ( OrderType ()==type) {
p++;
}}}}
return (p);
}
Böyle bir şey mümkündür:
void OnTick ()
{
Comment ( IsCount( ORDER_TYPE_BUY_STOP , 5 ) ); // type - тип, mg - magic
}
//------- Вернёт количество
int IsCount( int type, int mg) {
int p= 0 ;
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mg) {
if ( OrderType ()==type) {
p++;
}}}}
return (p);
}
Примерно так можно:
{
Comment ( IsCount( ORDER_TYPE_BUY_STOP , 5 ) ); // type - тип, mg - magic
}
//------- Вернёт количество
int IsCount( int type, int mg) {
int p= 0 ;
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mg) {
if ( OrderType ()==type) {
p++;
}}}}
return (p);
}
Спасибо большое, попробую.
buradaki gibi
Teşekkür ederim!
ORDER_TYPE_BUY_STOP , MQL4 yardımında değil, MQL4 düzenleyicide vurgulanmıştır. Soru: MQL4'te çalışıyor mu OP_BUYSTOP türüne karşılık geliyor mu? Sadece kontrol etmek için zamanın yok.
Evet %100 çalışıyor, şimdi sadece böyle yazıyorum. Şimdi çok şey beşten dörde göç etti.
Bu bile işe yarıyor, derleyici küfür etse de, bu bir trend çizgisi.
ObjectSetDouble (chart_ID,nm, OBJPROP_PRICE ,p1);
ObjectSetInteger (chart_ID,nm, OBJPROP_TIME , 1 ,t2);
ObjectSetDouble (chart_ID,nm, OBJPROP_PRICE , 1 ,p2);