var58 : 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.
//------- Вернёт количество 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); }
voidOnDeinit ( constint 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.
//------- Вернёт количество 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); }
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.
//------- Вернёт количество 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); }
//------- Вернёт количество 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); }
Artyom Trishkin : 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.
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);