감사합니다. 좋은 예를 살펴보겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
//+------------------------------------------------------------------+//| LastOrderProfitInPips.mq4 |//| IgorM |//| https://www.mql5.com/ru/users/igorm |//+------------------------------------------------------------------+#property copyright"IgorM"#property link"https://www.mql5.com/ru/users/igorm"#property version"1.00"#property strict//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
printf ( "Прибыль последнего закрытого ордера %d пунктов" ,LastHistoryProfit());
}
//+------------------------------------------------------------------+int LastHistoryProfit( int magic_=- 1 )
{
datetime t= 0 ;
int profit=0;
for ( int i= 0 ; i<OrdersHistoryTotal(); i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
{
if ((OrderMagicNumber()==magic_ || magic_==- 1 ) && (OrderSymbol()== _Symbol ))
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (OrderCloseTime()>t)
{
t=OrderCloseTime();
profit= ( int )( fabs (OrderOpenPrice()-OrderClosePrice())/ _Point );
profit= OrderProfit()>= 0.0 ? profit : -profit;
}
}
}
}
}
return (profit);
}
//+------------------------------------------------------------------+
10분 만에 처음부터 썼다? - 글쎄요, 이런 식으로 논리는 간단하고 이해할 수 있습니다. MT5에서 우리는 지금까지 진공 상태의 구형 말에 대해서만 논의하고 있습니다 ... 거래가 있고 주문이 있는지 여부는 논의해야합니다. 네팅 또는 헤지 계정 유형 .... 글쎄, 아침까지 뭔가 - 우리는 쓸 것입니다
감사합니다. 좋은 예를 연구하겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
글쎄, MT5에서 이 스크립트를 실행하는 방법을 말할 필요가 없습니다. 그러나 스크립트 자체에 오류가 있습니다.
먼저 이야기를 보여드리자면
및 실행 결과
Прибыль последнего закрытого ордера - 259 пунктов
그리고 실수는 여기에 있습니다
int LastHistoryProfit( int magic_=- 1 )
{
datetime t= 0 ;
int profit= 0 ;
for ( int i= 0 ; i<OrdersHistoryTotal(); i++) // Надо бежать в обратную сторону, т.к. последняя позиция может быть закрыта в ту же секунду, что и предпоследняя.
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
{
if ((OrderMagicNumber()==magic_ || magic_==- 1 ) && (OrderSymbol()== _Symbol ))
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (OrderCloseTime()>t) // В отличие от MT4, в MT5 это можно не делать - сортировка по времени закрытия есть.
{
t=OrderCloseTime();
profit= ( int )( fabs (OrderOpenPrice()-OrderClosePrice())/ _Point ); // При таком вычислении легко потерять один пункт.
profit= OrderProfit()>= 0.0 ? profit : -profit;
}
}
}
}
}
return (profit);
}
어떻게 고치는 지? 그것에 대해 생각한 적이 없지만 계획은 표준 인 것 같습니다. 2 개의 가격 - 차이를 발견하고 포인트로 나눕니다.
더블 캐스팅 시 손실 -> int.
나머지는 동의하지만 순서 정렬 방식은 고전적이며 가장 긴 시간을 비교하고 싶을 때를 대비하여 .... 그런 작업은 처음이지만 생각해야합니다. 99.99%의 경우 MT4의 아무도 hft TS를 거래하려고 시도하지 않습니다.
HFT는 그것과 아무 관련이 없습니다. CloseAll 스크립트는 1초 내에 두 위치를 닫을 수 있습니다. MT4에서는 비교해야 하지만 MT5에서는 불필요합니다. 음, 아마도 ArraySort를 사용하여 비교하는 것이 더 쉬울 것입니다(예를 들어, 끝에서 두 번째 닫힌 위치 로 빠르게 변경해야 하는 경우).
감사합니다. 좋은 예를 살펴보겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
//+------------------------------------------------------------------+//| LastOrderProfitInPips.mq4 |//| IgorM |//| https://www.mql5.com/ru/users/igorm |//+------------------------------------------------------------------+#property copyright"IgorM"#property link"https://www.mql5.com/ru/users/igorm"#property version"1.00"#property strict//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
printf ( "Прибыль последнего закрытого ордера %d пунктов" ,LastHistoryProfit());
}
//+------------------------------------------------------------------+int LastHistoryProfit( int magic_=- 1 )
{
datetime t= 0 ;
int profit=0;
for ( int i= 0 ; i<OrdersHistoryTotal(); i++)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY))
{
if ((OrderMagicNumber()==magic_ || magic_==- 1 ) && (OrderSymbol()== _Symbol ))
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (OrderCloseTime()>t)
{
t=OrderCloseTime();
profit= ( int )( fabs (OrderOpenPrice()-OrderClosePrice())/ _Point );profit= OrderProfit()>= 0.0 ? profit : -profit;
}
}
}
}
}
return (profit);
}
//+------------------------------------------------------------------+
10분 만에 처음부터 썼다? - 글쎄요, 이런 식으로 논리는 간단하고 이해할 수 있습니다. MT5에서 우리는 지금까지 진공 상태의 구형 말에 대해서만 논의하고 있습니다 ... 거래가 있고 주문이 있는지 여부는 논의해야합니다. 네팅 또는 헤지 계정 유형 .... 글쎄, 아침까지 뭔가 - 우리는 쓸 것입니다
그리고 당신은 질문할 수 있습니다: 왜 개시 가격과 종가 사이의 차이의 절대값을 취한 다음, 포지션의 이익이 0보다 작으면 값을 빼기 기호로 대체하십시오.
Igor Makanu :
표준 CTrade는 기성품 서비스를 제공하지 않습니다.
MT4 에는 한 줄로 인코딩된 거래 항목이 있습니다. MT5에서는 백 라인 이라도 SB를 통해 동일한 작업을 수행할 수 없으며, 순수 MQL5에서는 훨씬 더 나쁩니다. 글쎄, 알았어.
https://www.mql5.com/en/forum/218100
감사합니다. 좋은 예를 살펴보겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
10분 만에 처음부터 썼다? - 글쎄요, 이런 식으로 논리는 간단하고 이해할 수 있습니다. MT5에서 우리는 지금까지 진공 상태의 구형 말에 대해서만 논의하고 있습니다 ... 거래가 있고 주문이 있는지 여부는 논의해야합니다. 네팅 또는 헤지 계정 유형 .... 글쎄, 아침까지 뭔가 - 우리는 쓸 것입니다
감사합니다. 좋은 예를 연구하겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
글쎄, MT5에서 이 스크립트를 실행하는 방법을 말할 필요가 없습니다. 그러나 스크립트 자체에 오류가 있습니다.
먼저 이야기를 보여드리자면
및 실행 결과
Прибыль последнего закрытого ордера - 259 пунктов
그리고 실수는 여기에 있습니다
그리고 실수는 여기에 있습니다
При таком вычислении легко потерять один пункт.
어떻게 고치는 지? 그것에 대해 생각한 적이 없지만 계획은 표준 인 것 같습니다. 2 개의 가격 - 차이를 발견하고 포인트로 나눕니다.
나머지는 동의하지만 순서 정렬 방식은 고전적이며 가장 긴 시간을 비교하고 싶을 때를 대비하여 .... 그런 작업은 처음이지만 생각해야합니다. 99.99%의 경우 MT4의 아무도 hft TS를 거래하려고 시도하지 않습니다.
어떻게 고치는 지? 그것에 대해 생각한 적이 없지만 계획은 표준 인 것 같습니다. 2 개의 가격 - 차이를 발견하고 포인트로 나눕니다.
더블 캐스팅 시 손실 -> int.
나머지는 동의하지만 순서 정렬 방식은 고전적이며 가장 긴 시간을 비교하고 싶을 때를 대비하여 .... 그런 작업은 처음이지만 생각해야합니다. 99.99%의 경우 MT4의 아무도 hft TS를 거래하려고 시도하지 않습니다.
HFT는 그것과 아무 관련이 없습니다. CloseAll 스크립트는 1초 내에 두 위치를 닫을 수 있습니다. MT4에서는 비교해야 하지만 MT5에서는 불필요합니다. 음, 아마도 ArraySort를 사용하여 비교하는 것이 더 쉬울 것입니다(예를 들어, 끝에서 두 번째 닫힌 위치 로 빠르게 변경해야 하는 경우).
더블 캐스팅 시 손실 -> int.
이것은 모두 명확하지만 전체 포인트에서 두 가격 간의 차이를 올바르게 계산하는 방법은 무엇입니까?
이것은 모두 명확하지만 전체 포인트에서 두 가격 간의 차이를 올바르게 계산하는 방법은 무엇입니까?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
오늘 마감된 주문(Mql5)에 대해 계산된 총 핍에 대한 도움이 필요합니다.
fxsaber , 2017.10.25 01:00
감사하다!
특히 좋아하는
나는 그것을 서비스로 가져갈 것입니다. 나는 일반적으로 글로벌 가시성에서 한 번 계산될 모든 것을 씁니다. 귀하의 예는 훨씬 더 잘 읽힙니다.
....
그리고 그게 맞나요? 주문 루프에서 SymbolInfoDouble(OrderSymbol(), SYMBOL_POINT ); OrderSymbol ()이 매번 다르기 때문에 다시 계산합니까?
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
초보자의 질문 MQL5 MT5 MetaTrader 5
이고르 마카누 , 2019.06.04 18:43
감사합니다. 좋은 예를 살펴보겠습니다. 여기에서 MT4의 스크립트를 스케치했습니다. 이익을 포인트로 결정합니다.
10분 만에 처음부터 썼다? - 글쎄요, 이런 식으로 논리는 간단하고 이해할 수 있습니다. MT5에서 우리는 지금까지 진공 상태의 구형 말에 대해서만 논의하고 있습니다 ... 거래가 있고 주문이 있는지 여부는 논의해야합니다. 네팅 또는 헤지 계정 유형 .... 글쎄, 아침까지 뭔가 - 우리는 쓸 것입니다
즉석에서 쓰고 싶은대로 썼어요 - +100pp나 -100pp를 출력하고 싶었어요, 취향문제라고 합시다 - 오더의 종류를 결정 하고 오프닝과 클로징 을 비교하기 위한 특별한 작업과 작성조건은 없었어요 가격 은 추가 라인이 많이있을 것 같았습니다 ...
추신: 여기에 프로그래머 포럼이 있습니까? - 그들은 이런 식으로 하나의 코드(특히 다른 사람의 코드)를 10번 최적화할 수 있으므로 5줄 대신 4)))