//+------------------------------------------------------------------+ //| Get the property value "POSITION_COMMISSION" | //+------------------------------------------------------------------+ double CPositionInfo::Commission(void) const { return(PositionGetDouble(POSITION_COMMISSION)); } //+------------------------------------------------------------------+ //| Get the property value "POSITION_SWAP" | //+------------------------------------------------------------------+ double CPositionInfo::Swap(void) const { return(PositionGetDouble(POSITION_SWAP)); } //+------------------------------------------------------------------+ //| Get the property value "POSITION_PROFIT" | //+------------------------------------------------------------------+ double CPositionInfo::Profit(void) const { return(PositionGetDouble(POSITION_PROFIT)); }
//+------------------------------------------------------------------+ //| Get the property value "POSITION_COMMISSION" | //+------------------------------------------------------------------+ double CPositionInfo::Commission(void) const { return(PositionGetDouble(POSITION_COMMISSION)); } //+------------------------------------------------------------------+ //| Get the property value "POSITION_SWAP" | //+------------------------------------------------------------------+ double CPositionInfo::Swap(void) const { return(PositionGetDouble(POSITION_SWAP)); } //+------------------------------------------------------------------+ //| Get the property value "POSITION_PROFIT" | //+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| Get the property value "POSITION_COMMISSION" |//+------------------------------------------------------------------+double CPositionInfo::Commission(void) const
{
return(PositionGetDouble(POSITION_COMMISSION));
}
簡単なアドバイザーで確認してみましょう・・・。
確認する必要はありません。ロジックはMQL4と同じで、Profit、Commission、Swapはそれぞれ別個の存在です。
では、簡単なEAで確認してみましょう・・・。
ウラジミール、要は4で私はこうしているんです。
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
5人でどうやるの?
ウラジミール、要は4で私はこうしているんです。
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
5人でどうやるの?
コードで示してください、ここにmql5での直接のコードがあります、できれば曲解のない ものをお願いします。
//| Get the property value "POSITION_COMMISSION" |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
{
return(PositionGetDouble(POSITION_COMMISSION));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP" |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
{
return(PositionGetDouble(POSITION_SWAP));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT" |
//+------------------------------------------------------------------+
double CPositionInfo::Profit(void) const
{
return(PositionGetDouble(POSITION_PROFIT));
}
ほとんど不可能です!SBからピックアップ、ダイレクトコード
//| Get the property value "POSITION_COMMISSION" |
//+------------------------------------------------------------------+
double CPositionInfo::Commission(void) const
{
return(PositionGetDouble(POSITION_COMMISSION));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_SWAP" |
//+------------------------------------------------------------------+
double CPositionInfo::Swap(void) const
{
return(PositionGetDouble(POSITION_SWAP));
}
//+------------------------------------------------------------------+
//| Get the property value "POSITION_PROFIT" |
//+------------------------------------------------------------------+
ドキュメントに書き忘れましたが、この「POSITION_COMMISSION」は機能するのでしょうか?
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2016.07.19 12:40
テスター(RoboForexEU-MetaTrader 5)のPOSITION_COMMISSION プロパティは、常にゼロコミッションを返します。
また、POSITION_COMMISSION (== 8) は、ヘルプやメタエディタ(ハイライト)では欠落していますが、コンパイラではおなじみです。ポジション・コミッションは、別の(作業)方法で決定することも難しくありません。POSITION_COMMISSION プロパティ - 初歩的なこと?
{
double Commission = ::PositionGetDouble(POSITION_COMMISSION);
// На случай, если POSITION_COMMISSION не работает
if (Commission == 0)
{
const ulong Ticket = MT4ORDERS::GetPositionDealIn();
if (Ticket > 0)
{
const double LotsIn = ::HistoryDealGetDouble(Ticket, DEAL_VOLUME);
if (LotsIn > 0)
Commission = ::HistoryDealGetDouble(Ticket, DEAL_COMMISSION) * ::PositionGetDouble(POSITION_VOLUME) / LotsIn;
}
}
return(Commission);
}
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
初心者の方からの質問
fxsaber さん 2016.10.29 16:23
MT4Ordersのライブラリを課していない。でも、もしかしたら、古き良きOrderCommissionを 呼び出すだけの方が簡単かも?
ヘッジ会計だけでなく、ネット会計でもまだ使えます。
では、簡単なExpert Advisorで確認してみましょう...。
ここで、POSITION_PROFITは、ポジションの利益を示します。
.スワップなどは考慮していない。
ウラジミール、要は4で私はこうしているんです。
swap=OrderSwap();
commission=OrderCommission();
if(swap+commission<0.0) {
costs=NormalizeDouble(MathAbs(((swap+commission)/(SymbolInfoDouble(_symbol,SYMBOL_TRADE_TICK_VALUE)*ol))*_Point),_Digits);
} else {
costs=0.0;
}
// прибавляем количество пипок
if(((Bid-(br+costs+((BreakevenStep*_Point)*D)))>=op) && typ==0)
{
OrderModify(...);
}
5でどうやるんだ?
手数料は、クローズド・トレードでなければ決定できないほど予測不可能なものです。未決済ポジション の場合、現在の利益(スワップの影響も手数料の影響も考慮されていない)とスワップしかわかりません。以下はそのコードです。
m_trade.PositionClose(Symbol();" の行にブレークポイントを設定し、ヒストリでテストを実行します。テスターがブレークポイントで停止したら、ProfitとSwapの欄の数値をテスターログに書かれていない数値と比較する。
ここで、POSITION_PROFITは、ポジションの利益を示します。
.スワップなどは考慮していない。
オッケーです。手に入れました。
fxsaberの ソリューションは良いですね、私も適用しました。
基本的には、MQL4のプログラムをほぼ問題なくMQL5に移行できました。
詳細は前述したとおりです。
ありがとうございました。