// Через MT5-Стандартную Библиотеку - only MT5 // Выставляет SellLimit и затем устаналивает ему SL/TP void MT5Order( constdouble Price ) { CTrade Trade;
// Через MT5-Стандартную Библиотеку - only MT5 // Выставляет SellLimit и затем устаналивает ему SL/TP void MT5Order( constdouble Price ) { CTrade Trade;
// Через MT5-Стандартную Библиотеку - only MT5 // Выставляет SellLimit и затем устаналивает ему SL/TP void MT5Order( constdouble Price) { CTrade Trade;
2016.10 . 20 15 : 40 : 41 Core 1 connection closed
2016.10 . 20 15 : 40 : 16 History nothing to analyze
2016.10 . 20 15 : 40 : 16 Core 1 common synchronization completed
2016.10 . 20 15 : 40 : 16 Tester RTS- 12.16 ,M1 (BCS-MetaTrader5): visual testing of Experts\fxsaber\Test9.ex5 from 2016.10 . 19 00 : 00 to 2016.10 . 20 00 : 00
2016.10 . 20 15 : 40 : 16 Core 1 authorized (agent build 1455 )
2016.10 . 20 15 : 40 : 16 Core 1 connected
2016.10 . 20 15 : 40 : 16 Core 1 connecting to 127.0 . 0.1 : 3000
글쎄, 갑자기 기록이 없다면 어떤 이유로 한 번의 실행에 28(25 + 3)초가 걸리나요? 예, 그는 클라우드에 대해 이야기하고 있습니다!
이것은 내가 안전하게 잊어 버린 시각화 창을 연 상태에서 발생했습니다. 불분명하다.
테스터에서 경주하지 않았습니다.
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price )
{
CTrade Trade;
if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE ) == SYMBOL_TRADE_EXECUTION_EXCHANGE )
Trade.SetTypeFilling( ORDER_FILLING_RETURN );
Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 , Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );
const ulong Ticket = Trade.ResultOrder();
if (Ticket > 0 )
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade. OrderModify (Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
}
}
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT4Order( const double Price )
{
const int Ticket = OrderSend ( _Symbol , OP_SELLLIMIT , 1 , Price, 0 , 0 , 0 , __FUNCTION__ );
if ((Ticket > 0 ) && OrderSelect (Ticket, SELECT_BY_TICKET ))
OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () + SLTP, OrderOpenPrice () - SLTP, OrderExpiration (), clrNONE );
}
void OnTick ()
{
static bool FirstRun = true ;
if (FirstRun)
{
const double Price = SymbolInfoDouble ( _Symbol , SYMBOL_BID ) + 100 * _Point ;
MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun = false ;
}
}
결과(상향식)
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [invalid fill]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 failed modify order # 2 sell limit 1.00 at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000 , sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 16 : 49 : 14.986 2016.10 . 18 10 : 00 : 00 sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.985 RTS- 12.16 : real ticks begin from 2016.10 . 18 00 : 00 : 00
표준 라이브러리를 공부하고 테스트 고문을 작성했습니다.
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price )
{
CTrade Trade;
if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE ) == SYMBOL_TRADE_EXECUTION_EXCHANGE )
Trade.SetTypeFilling( ORDER_FILLING_RETURN );
Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 , Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );
const ulong Ticket = Trade.ResultOrder();
if (Ticket > 0 )
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade. OrderModify (Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
}
}
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
// Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT4Order( const double Price )
{
const int Ticket = OrderSend ( _Symbol , OP_SELLLIMIT , 1 , Price, 0 , 0 , 0 , __FUNCTION__ );
if ((Ticket > 0 ) && OrderSelect (Ticket, SELECT_BY_TICKET ))
OrderModify ( OrderTicket (), OrderOpenPrice (), OrderOpenPrice () + SLTP, OrderOpenPrice () - SLTP, OrderExpiration (), clrNONE );
}
void OnTick ()
{
static bool FirstRun = true ;
if (FirstRun)
{
const double Price = SymbolInfoDouble ( _Symbol , SYMBOL_BID ) + 100 * _Point ;
MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun = false ;
}
}
결과(상향식)
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [invalid fill]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 failed modify order # 2 sell limit 1.00 at 100.00000 sl: 0.00000 tp: 0.00000 -> 100.00000 , sl: 110.00000 tp: 90.00000 [Unsupported filling mode]
2016.10 . 20 16 : 49 : 14.987 2016.10 . 18 10 : 00 : 00 CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 16 : 49 : 14.986 2016.10 . 18 10 : 00 : 00 sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 97600 )
2016.10 . 20 16 : 49 : 14.985 RTS- 12.16 : real ticks begin from 2016.10 . 18 00 : 00 : 00
집에서 코드를 실행했습니다(MT4 제외).
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00 deal performed [ # 3 buy 1.00 RTS- 12.16 at 96500 ]
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00 deal # 3 buy 1.00 RTS- 12.16 at 96500 done (based on order # 3 )
2016.10 . 20 19 : 05 : 31.150 2016.09 . 16 10 : 00 : 00 stop loss triggered # 2 sell 1.00 RTS- 12.16 100 sl: 110 tp: 90 [ # 3 buy 1.00 RTS- 12.16 at 110 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00 order performed sell 1.00 at 100 [ # 2 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00 deal performed [ # 2 sell 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00 deal # 2 sell 1.00 RTS- 12.16 at 100 done (based on order # 2 )
2016.10 . 20 19 : 05 : 31.148 2016.09 . 16 10 : 00 : 00 order [ # 2 sell limit 1.00 RTS- 12.16 at 100 ] triggered
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00 CTrade:: OrderSend : modify # 2 at 100.00000 (sl: 110.00000 tp: 90.00000 ) [done]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00 order modified [ # 2 sell limit 1.00 RTS- 12.16 at 100 ]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00 CTrade:: OrderSend : sell limit 1.00 RTS- 12.16 at 100 [done]
2016.10 . 20 19 : 05 : 31.121 2016.09 . 16 10 : 00 : 00 sell limit 1.00 RTS- 12.16 at 100 ( 0 / 0 / 96650 )
2016.10 . 20 19 : 05 : 31.118 RTS- 12.16 : real ticks begin from 2016.09 . 16 00 : 00 : 00
2016.10 . 20 19 : 05 : 30.941 RTS- 12.16 ,M1: testing of Experts\test_filling_mode.ex5 from 2016.09 . 16 00 : 00 to 2016.09 . 20 00 : 00 started
2016.10 . 20 19 : 05 : 30.941 RTS- 12.16 ,M1 ( Open -Broker): generating based on real ticks
2016.10 . 20 19 : 05 : 30.940 RTS- 12.16 ,M1: history begins from 2015.01 . 15 10 : 08
2016.10 . 20 19 : 05 : 30.937 RTS- 12.16 ,M1: history cache allocated for 645942 bars and contains 15277 bars from 2015.01 . 15 10 : 08 to 2016.09 . 15 23 : 49
#define SLTP ( 10 * _Point )
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
static bool FirstRun= true ;
if (FirstRun)
{
const double Price= SymbolInfoDouble ( _Symbol , SYMBOL_BID )+ 100 * _Point ;
MT5Order(Price); // Через MT5-Стандартную Библиотеку - only MT5
//MT4Order(Price); // Через MT4-ОЯС - кроссплатформенный вариант (MT4/5)
FirstRun= false ;
}
}
//+------------------------------------------------------------------+
// Через MT5-Стандартную Библиотеку - only MT5
// Выставляет SellLimit и затем устаналивает ему SL/TP
void MT5Order( const double Price)
{
CTrade Trade;
if (( ENUM_SYMBOL_TRADE_EXECUTION ):: SymbolInfoInteger ( _Symbol , SYMBOL_TRADE_EXEMODE )== SYMBOL_TRADE_EXECUTION_EXCHANGE )
Trade.SetTypeFilling( ORDER_FILLING_RETURN );
Trade.OrderOpen( _Symbol , ORDER_TYPE_SELL_LIMIT , 1 , 0 ,Price, 0 , 0 , ORDER_TIME_GTC , 0 , __FUNCTION__ );
const ulong Ticket=Trade.ResultOrder();
if (Ticket> 0 )
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade. OrderModify (Order.Ticket(),Order.PriceOpen(),Order.PriceOpen()+SLTP,Order.PriceOpen()-SLTP,Order.TypeTime(),Order.TimeExpiration());
}
}
//+------------------------------------------------------------------+
집에서 코드를 시작했습니다(MT4 제외).
어쩌면 그게
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
오류, 버그, 질문
fxsaber , 2016.10.18 22:00
웹 엔진 버그
눈치채지 못했다
물론 엘리트를 제외하고는 누구에게도 간섭하지 않기 때문에 더 우선 순위가 높은 작업에 종사할 가능성이 큽니다.
내가 아는 한, 이 기능은 이미 1년 동안 사용되었습니다.
{
public :
virtual string classname() const
{
return ( typename ( this ));
}
};
class B : public A
{
public :
virtual string classname() const
{
return ( typename ( this ));
}
};
void OnStart ()
{
B b;
Print (b.classname());
}
각 상속된 클래스에서 동일한 처방을 해야 합니다.
{
return ( typename ( this ));
}
MQL에서 그러한 꼬리를 당기지 않을 수 있습니까?