사람들을 도와주세요. 며칠 동안 나는 고문에서 두 가지 기능을 구현하려고 노력했습니다. 첫 번째는 마지막 거래의 이익을 결정하고 두 번째는 마지막 거래의 로트를 결정합니다.
이 사이트는 기사 및 기타 고문의 예에 따라 여러 기능을 뒤적거렸지만 결과가 없었습니다. 두 기능 모두 항상 0.00의 값을 제공합니다.
다음은 올바른 옵션에 가장 가깝다고 생각하지만 결과는 항상 0입니다.
double LossLastPos(){
// --- определение границ требуемой торговой истории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 ) // получили в кэш исторический ордер, работаем с ним
{
//Получаем значение прибыли последнего ордераdouble profit = HistoryDealGetDouble (order_ticket, DEAL_PROFIT );
return (profit);
}
}
100% 작동하는 솔루션을 게시합니다. 이 함수는 터미널 기록에서 마지막으로 마감된 위치의 이익 크기를 반환합니다.
//+------------------------------------------------------------------+ //|Функция возвращает профит последней позиции |//+------------------------------------------------------------------+double ProfitLastPos()
{
// --- определение границ требуемой торговой историиdatetime end= TimeCurrent (); // текущее серверное времяdatetime start=end- PeriodSeconds ( PERIOD_D1 ); // установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньif ( HistorySelect (start,end))
{
//--- получим количество сделок в историиint history_orders= HistoryDealsTotal ();
//--- получим тикет сделки из истории, имеющей последний индекс в спискеulong order_ticket= HistoryDealGetTicket (history_orders- 1 );
if (order_ticket> 0 ) // получили в кэш историческую сделку, работаем с ней
{
profit= HistoryDealGetDouble (order_ticket, DEAL_PROFIT );
}
}
return (profit);
}
안녕하세요! 최근 MQL5를 g아 먹기 시작했습니다. 포지션을 청산하는 데 문제가 있습니다. 코드에 작성합니다. if(!m_Trade.PositionClose(_Symbol,100))//--- 현재 기호의 위치를 닫습니다. 결과 - 위치가 반대입니다! 힌트를 주시면 대단히 감사하겠습니다. 어떻게 포지션을 청산할 수 있습니까?
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
if( p_close1 < buy_stop_level )// если бар 1 закрылся ниже уровня стоп
{
if(!m_Trade.PositionClose(_Symbol,100))//--- закрываем позицию по текущему символу
{
//--- сообщим о неудачеPrint("Метод PositionClose() потерпел неудачу. Код возврата=",m_Trade.ResultRetcode(),
". Описание кода: ",m_Trade.ResultRetcodeDescription());
}
else
{
Print("Метод PositionClose() выполнен успешно. Код возврата=",m_Trade.ResultRetcode(),
" (",m_Trade.ResultRetcodeDescription(),")");
}
}
}
MT5에 주식(미래)을 넣어 내 자신을 테스트하고 싶습니다. 어떻게 합니까?
절대 안돼. 이 미래와 함께 DC를 찾아
%)))이 미래에는 DC가 없습니다))) 함께 붙어 있어야합니다 ...
유감, 유감이지만 모든 것이 너무 아름답게 시작되었습니다 ...
모두를 환영합니다!
사람들을 도와주세요. 며칠 동안 나는 고문에서 두 가지 기능을 구현하려고 노력했습니다. 첫 번째는 마지막 거래의 이익을 결정하고 두 번째는 마지막 거래의 로트를 결정합니다.
이 사이트는 기사 및 기타 고문의 예에 따라 여러 기능을 뒤적거렸지만 결과가 없었습니다. 두 기능 모두 항상 0.00의 값을 제공합니다.
다음은 올바른 옵션에 가장 가깝다고 생각하지만 결과는 항상 0입니다.
같은 방법으로 로트 크기를 얻으려고 합니다.
그리고 아무 일도 일어나지 않고 값은 항상 0입니다.
나 자신은 mql4에서 mql5로 전환하고 이러한 기능을 mql4로 구현하는 데 어려움이 없었지만 여기에서는 막다른 골목에 있습니다.
실제 작동하는 솔루션을 알려주세요.
...
실제 작동하는 솔루션을 알려주세요.
HistoryDealGetTicket () 및 HistoryDealsTotal ()을 사용합니다.
그리고 다음을 확인하십시오.
tol64 정말 감사합니다! 모든 것이 효과가 있었습니다.
100% 작동하는 솔루션을 게시합니다. 이 함수는 터미널 기록에서 마지막으로 마감된 위치의 이익 크기를 반환합니다.
유추하여 우리는 마지막 거래의 로트 크기를 얻습니다.
tol64 정말 감사합니다! 모든 것이 효과가 있었습니다.
...
그리고 여전히 편집기에서 Ctrl + (영어 열기)를 누르면 깔끔한 형식의 코드를 받게 됩니다. 포럼에 예제를 업로드하기 전에 특히 중요합니다(가독성 향상). ))
안녕하세요! 최근 MQL5를 g아 먹기 시작했습니다. 포지션을 청산하는 데 문제가 있습니다. 코드에 작성합니다. if(!m_Trade.PositionClose(_Symbol,100))//--- 현재 기호의 위치를 닫습니다. 결과 - 위치가 반대입니다! 힌트를 주시면 대단히 감사하겠습니다. 어떻게 포지션을 청산할 수 있습니까?
막대가 정지 수준 아래에서 닫힌 후 전문가 로그. 롱 포지션 = 1랏이 있었는데 숏 포지션 = 1랏이 되었습니다)