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);
}
}
//+------------------------------------------------------------------+ //|Функция возвращает профит последней позиции |//+------------------------------------------------------------------+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);
}
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------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に株(先物)を入れて自分のをテストしたいのですが、どうしたらいいですか?
まさか、この先物がある証券会社を探す。
%)))このfuchsでDCはありません)))糊付けが必要なのですが...。
残念だ、残念だ、せっかくきれいに始まったのに...。
皆さん、こんにちは。
私のEAに2つの関数を実装しようとしています。1つ目は最後の取引の利益を定義し、2つ目は最後の取引のロットを定義しています。
このサイトをAからZまで検索し、記事や他のEAの例に従っていくつかの関数を作りましたが、結果は出ず、どちらの関数も常に0.00を返します。
これが正しい変形に最も近いと思われるが、結果は常に0である。
同じようにロットサイズを取得するようにしています。
そして、何も動作せず、値は常にゼロです。
私自身、mql4からmql5への移行を始めたばかりで、mql4でのこのような機能の実装はそれほど難しくなかったのですが、ここでデッドロックが発生しました。
本当に使える解決策をご教示ください。
...
実際に動作する解決策を提案してください。
HistoryDealGetTicket()とHistoryDealsTotal()を使用します。
そして、検証を行う。
tol64 ありがとうございました。すべてがうまくいっている。
この関数は、端末の履歴にある最後のクローズポジションの利益を返します。
類推により、最後の取引のロットサイズを得ることができます。
tol64 ありがとうございました。すべてうまくいっている。
...
エディタでCtrl+も 押せば、きちんとした書式のコードが得られます。これは、フォーラムにサンプルをアップロードする前に特に重要です(読みやすさが向上します)。))
ごきげんよう!最近MQL5を学び始めました。ポジションクローズで困って います。コード内: if(!m_Trade.PositionClose(_Symbol,100))//--- 現在のシンボルでポジションをクローズします。結果、立場が逆転!ヒントがあればありがたいのですが、ポジションを閉じるにはどうしたらいいのでしょうか?
バーがストップレベルより下に閉じた後、EAログを記録します。ロングポジション=1ロット、ショートポジション=1ロット)![](https://c.mql5.com/3/14/ig3mu2_lrw3rut0.jpg)