//------- Вернёт количество 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); }
ORDER_TYPE_BUY_STOP 은 MQL4 도움말이 아니라 MQL4 편집기에서 강조 표시됩니다. 질문: MQL4에서 작동합니까? OP_BUYSTOP 유형에 해당합니까? 확인할 시간이 없습니다.
//------- Вернёт количество 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); }
안녕하세요. MQL4 어드바이저 코드에서 주문을 여는 규칙을 작성하는 방법을 알려주십시오. 시장에 특정 마법이 있는 주문이 있어야 합니다. 그러한 주문이 없으면 어드바이저는 메인에 따라 아무 것도 열지 않습니다. 연산. 이 마법은 변수에 등록됩니다.
다음과 같은 것이 가능합니다.
{
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);
}
배열을 사용자로 채우는 방법은 무엇입니까?
배열을 사용자로 채우는 방법은 무엇입니까?
안녕하세요, 차트 에 주문 내역 을 그리는 표시기가 있으며 코드는 다음과 같습니다.
//| 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();
}
}
표시기는 단일 거래를 올바르게 그립니다(선>배경>이익), 그러나 닫힌 주문 그리드의 표시에는 작은 "캔트"(스크린샷 첨부)가 있고, 선은 배경과 이익(선(1)>배경에 겹쳐짐)이 있습니다. >이익>선(2) >선(3)>선(4) ... ).
(line(1)>line(2)>line(3)>line(4) ... >background>profit)과 같아야 합니다. 탬버린과 함께하는 다양한 춤이 성공으로 이어지지 않았으므로 문제를 해결하는 데 도움이 됩니다.
사용자 외에 누가 채울 수 있습니까?
설정을 통해 채우는 방법에 대해 이야기하고 있습니다. 문자열을 통해 말한 다음 그 값을 배열에 넣습니다 ...
설정을 통해 채우는 방법에 대해 이야기하고 있습니다. 문자열을 통해 말한 다음 그 값을 배열에 넣습니다 ...
다음과 같은 것이 가능합니다.
{
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);
}
다음과 같은 것이 가능합니다.
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);
}
Спасибо большое, попробую.
여기 처럼
고맙습니다!
ORDER_TYPE_BUY_STOP 은 MQL4 도움말이 아니라 MQL4 편집기에서 강조 표시됩니다. 질문: MQL4에서 작동합니까? OP_BUYSTOP 유형에 해당합니까? 확인할 시간이 없습니다.
예, 100% 작동합니다. 이제 저는 그냥 그렇게 씁니다. 이제 많은 것이 5개에서 4개로 마이그레이션되었습니다.
이것도 작동하지만 컴파일러는 맹세했지만 이것은 추세선입니다.
ObjectSetDouble (chart_ID,nm, OBJPROP_PRICE ,p1);
ObjectSetInteger (chart_ID,nm, OBJPROP_TIME , 1 ,t2);
ObjectSetDouble (chart_ID,nm, OBJPROP_PRICE , 1 ,p2);