Добрый день, уважаемые форумчане!
Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:
1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов
Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.
- Stop Loss не работает больше - сливать, так сливать.
- Хороший пример работы с лимитными ордерами в советнике
- Бета-релиз MetaTrader 4 Mobile SE
ProfitTraderRU:
Добрый день, уважаемые форумчане!
Добрый день, уважаемые форумчане!
Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:
1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов
Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.
#property script_show_inputs
input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
double iprice=price;
if(price==0.0) iprice=tick.ask;
bool res;
double margin=0.0;
res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
MqlTradeRequest request={0};
MqlTradeCheckResult result={0};
request.action=TRADE_ACTION_PENDING;
request.symbol=_Symbol;
request.volume=volum;
request.price=iprice;
request.type=typ;
request.type_filling=ORDER_FILLING_RETURN;
request.type_time=ORDER_TIME_DAY;
ResetLastError();
res=OrderCheck(request,result);
Comment(
"\n Размер маржи, необходимой для указанного типа ордера = ",margin,
"\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
"\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
"\n res=",res,
"\n retcod=",result.retcode,
"\n retcod comment=",result.comment,
"\n error=",GetLastError(),
"");
}
//+------------------------------------------------------------------+
input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
double iprice=price;
if(price==0.0) iprice=tick.ask;
bool res;
double margin=0.0;
res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
MqlTradeRequest request={0};
MqlTradeCheckResult result={0};
request.action=TRADE_ACTION_PENDING;
request.symbol=_Symbol;
request.volume=volum;
request.price=iprice;
request.type=typ;
request.type_filling=ORDER_FILLING_RETURN;
request.type_time=ORDER_TIME_DAY;
ResetLastError();
res=OrderCheck(request,result);
Comment(
"\n Размер маржи, необходимой для указанного типа ордера = ",margin,
"\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
"\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
"\n res=",res,
"\n retcod=",result.retcode,
"\n retcod comment=",result.comment,
"\n error=",GetLastError(),
"");
}
//+------------------------------------------------------------------+
Пример скрипт, показывает сколько нужно средств для установки ордера, сколько средств должно быть на счете и сколько останется после.
Правда для рыночных ордеров ORDER_TYPE_BUY и ORDER_TYPE_SELL, неправильно вычисляется, или у брокера неправильно настроено.
Sergey Chalyshev:
Благодарю Вас, Сергей!
#property script_show_inputs
input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
double iprice=price;
if(price==0.0) iprice=tick.ask;
bool res;
double margin=0.0;
res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
MqlTradeRequest request={0};
MqlTradeCheckResult result={0};
request.action=TRADE_ACTION_PENDING;
request.symbol=_Symbol;
request.volume=volum;
request.price=iprice;
request.type=typ;
request.type_filling=ORDER_FILLING_RETURN;
request.type_time=ORDER_TIME_DAY;
ResetLastError();
res=OrderCheck(request,result);
Comment(
"\n Размер маржи, необходимой для указанного типа ордера = ",margin,
"\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
"\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
"\n res=",res,
"\n retcod=",result.retcode,
"\n retcod comment=",result.comment,
"\n error=",GetLastError(),
"");
}
//+------------------------------------------------------------------+
input ENUM_ORDER_TYPE typ = ORDER_TYPE_BUY_LIMIT;
input double volum = 1.0;
input double price = 0.0; // price (если=0.0 то по цене Ask)
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
MqlTick tick;
SymbolInfoTick(_Symbol,tick);
double iprice=price;
if(price==0.0) iprice=tick.ask;
bool res;
double margin=0.0;
res=OrderCalcMargin(typ,_Symbol,volum,iprice,margin);
MqlTradeRequest request={0};
MqlTradeCheckResult result={0};
request.action=TRADE_ACTION_PENDING;
request.symbol=_Symbol;
request.volume=volum;
request.price=iprice;
request.type=typ;
request.type_filling=ORDER_FILLING_RETURN;
request.type_time=ORDER_TIME_DAY;
ResetLastError();
res=OrderCheck(request,result);
Comment(
"\n Размер маржи, необходимой для указанного типа ордера = ",margin,
"\n Размер маржи (средств) необходимый для требуемой торговой операции = ",result.margin,
"\n Размер свободных собственных средств, которые останутся после выполнения требуемой торговой операции = ",result.margin_free,
"\n res=",res,
"\n retcod=",result.retcode,
"\n retcod comment=",result.comment,
"\n error=",GetLastError(),
"");
}
//+------------------------------------------------------------------+
Пример скрипт, показывает сколько нужно средств для установки ордера, сколько средств должно быть на счете и сколько останется после.
Правда для рыночных ордеров ORDER_TYPE_BUY и ORDER_TYPE_SELL, неправильно вычисляется, или у брокера неправильно настроено.
ProfitTraderRU:
Добрый день, уважаемые форумчане!
Добрый день, уважаемые форумчане!
Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:
1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов
Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.
Money Management и отложенные ордера
- www.mql5.com
При установке отложенного ордера, проверяются свободные средства...
ProfitTraderRU:
Добрый день, уважаемые форумчане!
Добрый день, уважаемые форумчане!
Подскажите из реального опыта какой максимальный процент свободных денег доступен для сценария, чтобы не получать сообщение о нехватке средств:
1. Свободно X денег. Без позиции.
2. Купил N контрактов
3. Перевернулся (2*N) контрактов
4. В позиции на N контрактов
Торговля лимитным ордерами. Si, RTS. Брокер Открытие. Если есть пример кода проверки достаточности средств - буду очень признателен, было бы полезно многим.
на mql4:
...
if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
if (CountBuyTrades() == 0) b = Ask;
if (b >= Ask) {
RefreshRates();
OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
b = FindLastBuyPrice() - In * Point;
}
}
...
if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
if (CountBuyTrades() == 0) b = Ask;
if (b >= Ask) {
RefreshRates();
OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
b = FindLastBuyPrice() - In * Point;
}
}
...
Aleksey Altukhov:
Здесь нет MQL4, только MQL5
на mql4:
...
if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
if (CountBuyTrades() == 0) b = Ask;
if (b >= Ask) {
RefreshRates();
OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
b = FindLastBuyPrice() - In * Point;
}
}
...
if (AccountFreeMarginCheck(Symbol(), OP_BUY, bl) >= 0) {
if (CountBuyTrades() == 0) b = Ask;
if (b >= Ask) {
RefreshRates();
OrderSend(Symbol(), OP_BUY, bl, Ask, In, 0, 0, "Martin ("+In+")", In, 0, Blue);
b = FindLastBuyPrice() - In * Point;
}
}
...
prostotrader:
Здесь нет MQL4, только MQL5
https://www.mql5.com/ru/search#!keyword=AccountFreeMarginCheck%20mql5
Здесь нет MQL4, только MQL5
Aleksey Altukhov:
https://www.mql5.com/ru/search#!keyword=AccountFreeMarginCheck%20mql5
https://www.mql5.com/ru/search#!keyword=AccountFreeMarginCheck%20mql5
Здесь обсуждают только биржевую торговлю на МТ5
А для МТ4 сюда
https://www.mql5.com/ru/forum/mql4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь