과정에 있고 최선의 방법으로 해결하는 방법을 알고 있는 조직 계획 momentik이 여전히 있습니다. 코드로 단어를 작성하도록 요청합니다.
일반적으로 주문 주기를 이해하는 방법 - 이익이 새로 시작됨 - 평균 포지션 개시 가격을 고려하기 위해(해당 청산 값이 변경됨):
분명히 말해서, 나 자신과 마술사가있는 로봇을 통해 터미널에서 들어갈 수도 있습니다 ....
일반적으로 포지션 진입의 평균 가격을 계산하려면 보고 포인트가 필요합니다.
여기에서 데이터를 사용할 수 있습니다. 예를 들어 이전 위치가 이익으로 마감된 시간을 읽고 거기에서 서버의 실시간과 차이를 가져옵니다. 예를 들어 터미널에서 직접 사이클을 시작하는 경우와 같이 마술 없이:
글쎄, 다음과 같은 것:
// --- определение границ требуемой торговой историиdatetime end= TimeCurrent (); // текущее серверное времяdatetime start=end- PeriodSeconds ( PERIOD_D1 ); // установим начало на сутки назад
플러스의 이전 위치와 같은 - 현재 사이클의 회계가 이미 시작되었습니다. 및 주문 - 총 포지션의 평균 진입 가격을 계산하려면 이미 진입 가격과 거래량을 모두 계산해야 합니다...
Получение информации по ордерам из истории
Работа с историческими ордерами почти ничем не отличается от работы с действующими ордерами за одним только исключением. Если количество действующих ордеров в кэше mql5-программе не может быть больше одного, то результат HistoryOrdersTotal () и количество исторических ордеров в кэше зависит от того, какой объем торговой истории был загружен функцией HistorySelect (start, end), HistorySelectByPosition () или HistoryOrderSelect ().
Важно: если торговая история не была загружена в кэш mql5-программы одной из функций HistorySelect (), HistorySelectByPosition () или HistoryOrderSelect (), то работать с историческими ордерами и сделками невозможно. Обязательно запрашивайте требуемую историю сделок и ордеров перед получением данных по торговой истории.
Для примера приведен скрипт, который ищет последний ордер за последний день и выводит по нему информацию.
// --- определение границ требуемой торговой историиdatetime end= TimeCurrent (); // текущее серверное времяdatetime start=end- PeriodSeconds ( PERIOD_D1 ); // установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньHistorySelect (start,end);
//--- получим количество ордеров в историиint history_orders= HistoryOrdersTotal ();
//--- получим тикет ордера из истории, имеющего последний индекс в спискеulong order_ticket= HistoryOrderGetTicket (history_orders- 1 );
if (order_ticket> 0 ) // получили в кэш исторический ордер, работаем с ним
{
//--- статус ордераENUM_ORDER_STATE state=( ENUM_ORDER_STATE ) HistoryOrderGetInteger (order_ticket, ORDER_STATE );
long order_magic = HistoryOrderGetInteger (order_ticket, ORDER_MAGIC );
long pos_ID = HistoryOrderGetInteger (order_ticket, ORDER_POSITION_ID );
PrintFormat ( "Ордер #%d: ORDER_MAGIC=#%d, ORDER_STATE=%d, ORDER_POSITION_ID=%d" ,
order_ticket,order_magic, EnumToString (state),pos_ID);
}
else// неудачная попытка получения ордера
{
PrintFormat ( "Всего в истории %d ордеров, не удалось выбрать ордер" +
" с индексом %d. Ошибка %d" ,history_orders,history_orders- 1 , GetLastError ());
}
Надежный торговый робот не может быть создан без понимания механизмов работы торговой системы MetaTrader 5. Клиентский терминал получает от торгового сервера информацию о позициях, ордерах и сделках. Чтобы правильно обработать эти данные средствами MQL5 необходимо хорошо представлять как происходит взаимодействие mql5-программы и среды исполнения терминала.
하지만! FORTS에서 작업할 때 위치 데이터에 의존해서는 안 됩니다.
내 로봇은 거래를 추적하고 초기 포지션 개시 가격(마지막 청산 이후가 아님)을 기억하고 이로부터 이익, SL, ...
그건 그렇고, 포지션 데이터에 의존해서는 안 되는 또 다른 이유가 있습니다. FORTS 네팅에서 여러 로봇과 수동 거래가 하나의 기호에서 거래할 수 있습니다. 그리고 이 종합적인 위치에서 실질적으로 유용한 것은 무엇을 얻을 수 있습니까?
따라서 각 로봇은 자신의 포즈를 기억하고 "이끈"합니다.
나는 보여 주었다. 우리는 이 마지막 평균 가격과 포지션 거래량, 새로운 거래의 가격과 거래량을 취합니다. 모든 것이 올바르게 계산됩니다.
그건 그렇고, 포지션 데이터에 의존해서는 안 되는 또 다른 이유가 있습니다. FORTS 네팅에서 여러 로봇과 수동 거래가 하나의 기호에서 거래할 수 있습니다. 그리고 이 종합적인 위치에서 실질적으로 유용한 것은 무엇을 얻을 수 있습니까?
따라서 각 로봇은 자신의 포즈를 기억하고 "이끈"합니다.
고마워. 같은 장소에서 자연스럽게 이러한 모든 시장 거래와 자세가 조건부입니까? (한 방향으로)?
로봇은 추세에 따라 다른 전략을 가질 수 있고 반대는 다른 시간 프레임에서 작동할 수 있으므로 포즈가 모든 방향으로 있을 수 있습니다. 그리고 MT에서는 "일반"만 볼 수 있습니다.
로봇은 트렌드에 따라 다른 전략을 가질 수 있으며 다른 시간대에 작업할 수 있으므로 포즈가 어떤 방향으로든 움직일 수 있습니다. 그리고 MT에서는 "일반"만 볼 수 있습니다.
저것들. 실제로 각 방향의 거래에 대한 전용 계정을 유지할 수 있습니다. 그게 전부입니다 ... :-)
물론 어렵습니다 ... 모든 것이 가상입니다. 모든 장점과 단점이 있습니다. 장군 그 한 위치... Nettingovaya.
이것은 물론 조롱입니다. 이 모든 것이 하나의 악기에서 수행된다면 ...
저것들. 실제로 각 방향의 거래에 대한 전용 계정을 유지할 수 있습니다. 그게 전부입니다 ... :-)
물론 어렵습니다 ... 모든 것이 가상입니다. 모든 장점과 단점이 있습니다. 장군 그 한 위치... Nettingovaya.
이것은 물론 조롱입니다. 이 모든 것이 하나의 악기에서 수행된다면 ...
그리고 몇 가지 옵션이 있습니다. 또는 기호당 하나의 "이상적인" 로봇 또는 다양화 - 여러 실제 로봇.
그리고 몇 가지 옵션이 있습니다. 또는 기호당 하나의 "이상적인" 로봇 또는 다양화 - 여러 실제 로봇.
한 가지 더 일반적인 점: 청산 후 총 포지션의 개시 가격 이전 외에 거래할 때 주의해야 하는 다른 "숨겨진" 함정이 있습니까?
실제로 수수료, 스왑이 있습니다. 볼 수 있다고 생각합니다. 네, 그리고 역사에 따르면 거래와 포지션을 계산할 수 있습니다... (이것은 거래 알고리즘의 조건에 따라 현재 포지션이나 그 부분이 플러스로만 커버되도록 하기 위한 것입니다!)
입찰 시 주의할 점은 무엇입니까?
한 가지 더 일반적인 점: 청산 후 총 포지션의 개시 가격 이전 외에 거래할 때 주의해야 하는 다른 "숨겨진" 함정이 있습니까?
실제로 수수료, 스왑이 있습니다. 볼 수 있다고 생각합니다. 네, 그리고 역사에 따르면 거래와 포지션을 계산할 수 있습니다... (이것은 거래 알고리즘의 조건에 따라 현재 포지션이나 그 부분이 플러스로만 커버되도록 하기 위한 것입니다!)
입찰 시 주의할 점은 무엇입니까?
거래에서 보이는 커미션은 거래소의 커미션일 뿐입니다. 거래 중 브로커의 수수료는 보이지 않습니다. 적어도 오프너는 그렇습니다.
OnTrade(또는 OnTradeTransaction)에 의한 거래를 보고 즉시 계산하여 상태 및 로그에 기록합니다.
만일의 경우를 대비하여 추가하겠습니다. 하나의 주문이 부분적 볼륨으로 여러 거래를 생성할 수 있다는 점을 고려해야 합니다.
거래에서 보이는 커미션은 거래소의 커미션일 뿐입니다. 거래 중 브로커의 수수료는 보이지 않습니다. 적어도 오프너는 그렇습니다.
OnTrade(또는 OnTradeTransaction)에 의한 거래를 보고 즉시 계산하여 상태 및 로그에 기록합니다.
만일의 경우를 대비하여 추가하겠습니다. 하나의 주문이 부분적 볼륨으로 여러 거래를 생성할 수 있다는 점을 고려해야 합니다.
과정에 있고 최선의 방법으로 해결하는 방법을 알고 있는 조직 계획 momentik이 여전히 있습니다. 코드로 단어를 작성하도록 요청합니다.
일반적으로 주문 주기를 이해하는 방법 - 이익이 새로 시작됨 - 평균 포지션 개시 가격을 고려하기 위해(해당 청산 값이 변경됨):
분명히 말해서, 나 자신과 마술사가있는 로봇을 통해 터미널에서 들어갈 수도 있습니다 ....
일반적으로 포지션 진입의 평균 가격을 계산하려면 보고 포인트가 필요합니다.
여기에서 데이터를 사용할 수 있습니다. 예를 들어 이전 위치가 이익으로 마감된 시간을 읽고 거기에서 서버의 실시간과 차이를 가져옵니다. 예를 들어 터미널에서 직접 사이클을 시작하는 경우와 같이 마술 없이:
글쎄, 다음과 같은 것:
플러스의 이전 위치와 같은 - 현재 사이클의 회계가 이미 시작되었습니다. 및 주문 - 총 포지션의 평균 진입 가격을 계산하려면 이미 진입 가격과 거래량을 모두 계산해야 합니다...https://www.mql5.com/ru/articles/211
-------------------------------------------------- ----------
물론 이상적으로는 이전 주기의 결과와 상관없이 플러스나 마이너스로 닫히도록 해야 합니다.
예를 들어, 새로운 실제 평균 주기의 평균 가격 또는 추가 충전의 시작은 코드에서 계산을 위해 표시되었습니다. 그것은 중요하지 않습니다...