Вы копируйте приведённый мной код с какой целью, что это объясняет?
Я думал это очевидно. Буду старатся изъяснять мысли более конкренто, как написали выше вы делали проверку по ордерам, а рабоали с сделками. Хорошо что эту "очепятку" исправят), хотя "очепятка" ли?, можно интерпретировать и так, что количество ордеров не равно количеству сделок за выбранный период)
Я не работаю с торговыми функциями обычно, использую написанные для меня классы - давно другими разработчиками, поэтому такая вещь сразу мне не была очевидна. Пробежался по функциям, скопировал код, модифицировал под себя и не допускал, что он не работает как ожидается изначально. Грешил в начале на другой класс с дефайнами, искал там, советовался с автором... В общем будь это код не от MQ, то стратегия поиска ошибки была бы выбрана иной.
Столкнулся с проблемой, что в тестере стратегий позиции открываются мгновенно (даже с установленной задержкой), а на реальном счете каждая позиция открывается через 400мс +-. Я делю одну позицию на несколько, потому что в МТ нельзя открывать много больше 10к, а в крипте этого мало. Кто-нибудь сталкивался с такой проблемой и как ее решить? Вот чем я открываю позы
if (условие)
for ( counter = 0 ; counter < iq; counter++)
trader.Buy();
Я прикрепил фото со ссылкой, потому что другого пути нет.
Помогите понять логику МТ5. Выбираю ордера в истории:
//--- запросить всю историю HistorySelect(0,TimeCurrent());
//--- переменные для получения значений из свойств ордера ulong ticket;
double open_price;
double initial_volume;
datetime time_setup;
datetime time_done;
string symbol;
long type;
long order_magic;
long positionID;
//--- количество текущих отложенных ордеров uint total=HistoryOrdersTotal();
Print("всего ордеров в истории", total);
//--- пройдем в цикле по всем ордерам for(uint i=0;i<total;i++)
{
//--- получим тикет ордера по его позиции в списке if((ticket=HistoryOrderGetTicket(i))>0)
{
//--- получим свойства ордера
open_price= HistoryOrderGetDouble(ticket,ORDER_PRICE_OPEN);
time_setup= (datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_SETUP);
time_done= (datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_DONE);
symbol= HistoryOrderGetString(ticket,ORDER_SYMBOL);
order_magic= HistoryOrderGetInteger(ticket,ORDER_MAGIC);
positionID = HistoryOrderGetInteger(ticket,ORDER_POSITION_ID);
initial_volume= HistoryOrderGetDouble(ticket,ORDER_VOLUME_INITIAL);
type= HistoryOrderGetInteger(ticket,ORDER_TYPE);
//--- подготовим и выведм информацию об ордере printf("#ticket %d %s %G %s at %G was set up at %s => done at %s, pos ID=%d",
ticket, // тикет ордера
type, // тип
initial_volume, // выставленный объем
symbol, // символ, по которому выставили
open_price, // указанная цена открытия TimeToString(time_setup),// время установки ордера TimeToString(time_done), // время исполнения илм удаления
positionID // ID позиции, в которую влилась сделка по ордеру
);
}
}
получаю:
GR020:16:50.551HAVAL (XAUUSD,M5)всего ордеров в истории19
DI020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250047 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250047
HR020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250049 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250049
NL020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250054 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250047
FI020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250146 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:21 => done at 2024.10.08 19:21, pos ID=1225250049
DR020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250188 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:23 => done at 2024.10.08 19:23, pos ID=1225250188
HL020:16:50.551HAVAL (XAUUSD,M5)#ticket 1225250221 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 19:25 => done at 2024.10.08 19:25, pos ID=1225250221
RK020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225250237 (non-string passed) 0.01 XAUUSD at 2614.83 was set up at 2024.10.08 19:26 => done at 2024.10.08 19:26, pos ID=1225250221
QP020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225250806 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 19:35 => done at 2024.10.08 19:35, pos ID=1225250806
JO020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225251596 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 19:50 => done at 2024.10.08 19:50, pos ID=1225251596
OD020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225252808 (non-string passed) 0.02 XAUUSD at 2610.16 was set up at 2024.10.08 19:56 => done at 2024.10.08 19:56, pos ID=1225251596
RS020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225252956 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 20:00 => done at 2024.10.08 20:00, pos ID=1225252956
CN020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225253906 (non-string passed) 0.03 XAUUSD at 0 was set up at 2024.10.08 20:05 => done at 2024.10.08 20:05, pos ID=1225253906
JE020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225254139 (non-string passed) 0.03 XAUUSD at 2607.03 was set up at 2024.10.08 20:06 => done at 2024.10.08 20:06, pos ID=1225253906
MS020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225254819 (non-string passed) 0.02 XAUUSD at 2610.26 was set up at 2024.10.08 20:08 => done at 2024.10.08 20:08, pos ID=1225252956
RH020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225254887 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 20:10 => done at 2024.10.08 20:10, pos ID=1225254887
MF020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225254980 (non-string passed) 0.02 XAUUSD at 2613.27 was set up at 2024.10.08 20:11 => done at 2024.10.08 20:11, pos ID=1225254887
IL020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225255101 (non-string passed) 0.01 XAUUSD at 2614.17 was set up at 2024.10.08 20:11 => done at 2024.10.08 20:11, pos ID=1225250806
IK020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225255635 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 20:15 => done at 2024.10.08 20:15, pos ID=1225255635
PP020:16:50.552HAVAL (XAUUSD,M5)#ticket 1225255684 (non-string passed) 0.01 XAUUSD at 2614.26 was set up at 2024.10.08 20:16 => done at 2024.10.08 20:16, pos ID=1225255635
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вы копируйте приведённый мной код с какой целью, что это объясняет?
Я думал это очевидно. Буду старатся изъяснять мысли более конкренто, как написали выше вы делали проверку по ордерам, а рабоали с сделками. Хорошо что эту "очепятку" исправят), хотя "очепятка" ли?, можно интерпретировать и так, что количество ордеров не равно количеству сделок за выбранный период)
Я думал это очевидно.
Я не работаю с торговыми функциями обычно, использую написанные для меня классы - давно другими разработчиками, поэтому такая вещь сразу мне не была очевидна. Пробежался по функциям, скопировал код, модифицировал под себя и не допускал, что он не работает как ожидается изначально. Грешил в начале на другой класс с дефайнами, искал там, советовался с автором... В общем будь это код не от MQ, то стратегия поиска ошибки была бы выбрана иной.
Спасибо, что участвовали в помощи мне.
Доброго времени суток!
Помогите, кто может!
Рыл форум, документацию, кодобазу - не нашел
....надо как-то расчитывать свопы и комиссии
Пробовал получать через PositionGetDouble(POSITION_SWAP) и через position.Swap() .... но увы...
Может ли быть такое, что в тестере при прогоне совы этих данных может не быть - и они не выводятся?
Заранее благодарен, люди добрые!
Доброго времени суток!
Помогите, кто может!
Рыл форум, документацию, кодобазу - не нашел
....надо как-то расчитывать свопы и комиссии
Пробовал получать через PositionGetDouble(POSITION_SWAP) и через position.Swap() .... но увы...
Может ли быть такое, что в тестере при прогоне совы этих данных может не быть - и они не выводятся?
Заранее благодарен, люди добрые!
Пример включает в себя все открытые позиции, дальше лишь дело техники). Комиссию можно расчитать только на совершонных сделках.
Я прикрепил фото со ссылкой, потому что другого пути нет.
Доброго дня!
Большое спасибо за ответ!
Вот код
int pos = PositionsTotal();
double swap = 0.0,
profit = 0.0;
for(int i = 0; i < pos; i++)
{
if(PositionGetSymbol(i) == _Symbol && (PositionGetInteger(POSITION_MAGIC) == InpMagic))
{
PositionGetDouble(POSITION_PROFIT, profit);
ResetLastError();
if(!PositionGetDouble(POSITION_SWAP, swap))
{
Print(__FUNCTION__,"....ERROR swap. ",GetLastError());
return;
}
}
}
....и увы, не выводит своп и в ошибку не входит.
...профит выводит
может это с данными истрическими брокера связано, ...rannforex , если что ....
упс...
ошибка новичка...при расчете в ОнТик - не считалось, вывел в отдельную функцию - считает...
еще раз спасибо!
Помогите понять логику МТ5. Выбираю ордера в истории:
получаю:
GR 0 20:16:50.551 HAVAL (XAUUSD,M5) всего ордеров в истории19
DI 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250047 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250047
HR 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250049 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250049
NL 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250054 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:19 => done at 2024.10.08 19:19, pos ID=1225250047
FI 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250146 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:21 => done at 2024.10.08 19:21, pos ID=1225250049
DR 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250188 (non-string passed) 0.1 XAUUSD at 0 was set up at 2024.10.08 19:23 => done at 2024.10.08 19:23, pos ID=1225250188
HL 0 20:16:50.551 HAVAL (XAUUSD,M5) #ticket 1225250221 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 19:25 => done at 2024.10.08 19:25, pos ID=1225250221
RK 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225250237 (non-string passed) 0.01 XAUUSD at 2614.83 was set up at 2024.10.08 19:26 => done at 2024.10.08 19:26, pos ID=1225250221
QP 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225250806 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 19:35 => done at 2024.10.08 19:35, pos ID=1225250806
JO 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225251596 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 19:50 => done at 2024.10.08 19:50, pos ID=1225251596
OD 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225252808 (non-string passed) 0.02 XAUUSD at 2610.16 was set up at 2024.10.08 19:56 => done at 2024.10.08 19:56, pos ID=1225251596
RS 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225252956 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 20:00 => done at 2024.10.08 20:00, pos ID=1225252956
CN 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225253906 (non-string passed) 0.03 XAUUSD at 0 was set up at 2024.10.08 20:05 => done at 2024.10.08 20:05, pos ID=1225253906
JE 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225254139 (non-string passed) 0.03 XAUUSD at 2607.03 was set up at 2024.10.08 20:06 => done at 2024.10.08 20:06, pos ID=1225253906
MS 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225254819 (non-string passed) 0.02 XAUUSD at 2610.26 was set up at 2024.10.08 20:08 => done at 2024.10.08 20:08, pos ID=1225252956
RH 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225254887 (non-string passed) 0.02 XAUUSD at 0 was set up at 2024.10.08 20:10 => done at 2024.10.08 20:10, pos ID=1225254887
MF 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225254980 (non-string passed) 0.02 XAUUSD at 2613.27 was set up at 2024.10.08 20:11 => done at 2024.10.08 20:11, pos ID=1225254887
IL 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225255101 (non-string passed) 0.01 XAUUSD at 2614.17 was set up at 2024.10.08 20:11 => done at 2024.10.08 20:11, pos ID=1225250806
IK 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225255635 (non-string passed) 0.01 XAUUSD at 0 was set up at 2024.10.08 20:15 => done at 2024.10.08 20:15, pos ID=1225255635
PP 0 20:16:50.552 HAVAL (XAUUSD,M5) #ticket 1225255684 (non-string passed) 0.01 XAUUSD at 2614.26 was set up at 2024.10.08 20:16 => done at 2024.10.08 20:16, pos ID=1225255635
хотя в истории
Что не так?