Акция — это ценная бумага, которая выпускается каким-либо предприятием (акционерным обществом) и дает ее владельцу права на получение части прибыли от этого предприятия в виде дивидендов. Также
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
//+------------------------------------------------------------------+//| TradeTransaction function |//+------------------------------------------------------------------+voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration valueENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
if(HistoryDealSelect(trans.deal))
m_deal.Ticket(trans.deal);
elsereturn;
if(m_deal.Symbol()==m_symbol.Name() && m_deal.Magic()==InpMagic)
{
if(m_deal.DealType()==DEAL_TYPE_BUY || m_deal.DealType()==DEAL_TYPE_SELL)
{
if(m_deal.Entry()==DEAL_ENTRY_IN || m_deal.Entry()==DEAL_ENTRY_INOUT)
m_last_deal_in=iTime(m_symbol.Name(),InpTimeFrame,0);int size_need_position=ArraySize(SPosition);
if(size_need_position>0)
{
for(int i=0; i<size_need_position; i++)
{
if(SPosition[i].waiting_transaction)
if(SPosition[i].waiting_order_ticket==m_deal.Order())
{
Print(__FUNCTION__," Transaction confirmed");
SPosition[i].transaction_confirmed=true;
break;
}
}
}
}
}
}
}
と、信号が発生した時刻を照合 する。
//+------------------------------------------------------------------+//| Search trading signals |//+------------------------------------------------------------------+bool SearchTradingSignals(void)
{
if(m_prev_bars==m_last_deal_in) // on one bar - only one dealreturn(true);
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
if (PositionsTotal()==1) // Здесь проверяю, что открыта одна позиция
{
datetime Cu=iTime(NULL,_Period,0); // Здесь в переменную - время открытия бара при открытой позиции
しかし、ここで「保存された時間と現在のバーの開始時間を調整する」問題が 発生します。
私もほぼ同じことをしました。 これを見てください。
if (PositionsTotal()==1) // Здесь проверяю, что открыта одна позиция (или была открыта, неважно, любое торговое действие)
{
datetime Cu=iTime(NULL,_Period,0); // Здесь в переменную - время открытия бара при открытой позицииint hd=+iBarShift(Symbol(),_Period,Cu)+1; // Здесь в переменную - бар на котором произошло открытие позиции if (hd>=1) //Здесь проверяем - если этих баров, больше чем один, то.......
{
return; //....то зацикливанием программу, НО проблема только в return
}
}
Тикет позиции. Уникальное число, которое присваивается каждой вновь открытой позиции. Как правило, соответствует тикету ордера, в результате которого она была открыта, за исключением случаев изменения тикета в результате служебных операций на сервере. Например, начисления свопов переоткрытием позиции. Для нахождения ордера, которым была открыта...
datetime PR=iTime(NULL,_Period,0); // проверяю время открытие бараif (PositionsTotal()==1)
{
datetime TK=iTime(NULL,_Period,0); // время открытия бара при открытой позиции if (PR==TK) // сравниваю
{
return(true); // НЕ катит true - ошибка
}
}
すべての人に。より正確には、設定で指定された本数のバーを チャートウィンドウに表示し、タイムフレームには依存しない
追伸:この値を変更したことはありませんが、今確認したところ、1000より小さく設定することはできないようです。iBars() で確認する必要があるのですね。
こんにちは。スクリプトがなぜか動作しない。
何が問題なのか?
ハローフレンド
質問です。
1.売りの逆指値 注文は、ブローカー側と端末側のどちらに発注するのですか?
2.プログラムを閉じたとき、この注文は条件を満たしたときに発生するのでしょうか?
MICEX株式 市場で取引。ありがとうございました。
プログラマーの皆さん、こんにちは。MQL5に関する質問
MetaTrader5でポジション制御を実装する方法は?私は1つのバーに1つのオープンポジションを 持ちたいのです。つまり、ポジションはどこのバーであろうとクローズされるべきですが、オープンは1つのバーだけであるべきなのです。
このコードは完全に無視されます。 どのようなエラーなのでしょうか?
プログラマーの皆さん、こんにちは。MQL5に関する質問
MetaTrader5でポジション制御を実装する方法は?つまり、1つのバーには1つのオープンポジションしか ありません。 どのバーでポジションを閉じてもいいのですが、オープンは1つのバーだけであるべきということです。
最も簡単な方法は、ポジションをオープンしたバーの開始時刻をグローバル変数に保存し、新しいポジションをオープンする際に、バーの開始時刻をチェックして、その値が保存した値より高ければ、ポジションをオープンすることです。
プログラマーの皆さん、こんにちは。MQL5に関する質問
MetaTrader5でポジション制御を実装する方法は?私は1つのバーに1つのオープンポジションを 持ちたいのです。つまり、ポジションはどこのバーであろうとクローズされるべきですが、オープンは1つのバーだけであるべきなのです。
このコードは完全に無視されます。 どのようなエラーなのでしょうか?
Error: You've mixed up flies and cutlets - You've mixed up REMOTE ORDERS and POSITIONS.
混乱を避けるため、参考:一般原則を お読みください。
上記の簡単な方法は、ポジションを建てるときに、現在のバーのオープン時間を記憶しておくことです。そして、新しいポジションを開く場合は、保存された時間と現在のバーのオープンタイムを確認します。
ポジションを開いた時刻を保存しておくと、OnTradeTransactionで 便利です。
と、信号が発生した時刻を照合 する。
OHLC チェック 2 コードからの抜粋例
ちょっと引っかかるんですよね......なんとなく。最初の段階では問題なし"現在のバーの開店 時間を覚えておく" 。
これでよしとする。
しかし、ここで「保存された時間と現在のバーの開始時間を調整する」問題が 発生します。
私もほぼ同じことをしました。 これを見てください。
ここで必要な のは、「return(-1)」のようなループ 歩きなのですが、voidのためreturnに式を代入できません。 これを回避するにはどうしたらいいでしょうか?ループさせるが、戻さない方法は?
それもうまくいかなかった。
ちょっと引っかかるんですよね......なんとなく。最初の段階では問題なし"現在のバーの開店 時間を覚えておく" 。
これでよしとする。
しかし、ここでは「保存された時刻と現在のバーの開店時刻を確認する」という問題が あります。
私もほぼ同じことをしました。 これを見てください。
ここで必要な のは、「return(-1)」のようなループ 歩きなのですが、voidのためreturnに式を代入できません。 これを回避するにはどうしたらいいでしょうか?ループさせるが、戻さない方法は?
ルーピングプログラムの治療は、首に巻いた腕を切ることです。今後、同じことを繰り返さないために。
ここに必要なものがあります。プログラム本体全体、信号の受信を形式化するだけでいいのです。
変数'm_prev_bars' には現在のバーのオープンタイムが、変数'm_last_deal_in' にはポジションがオープンされたバーのオープンタイムが格納されています。
この2つの変数は、シグナルを取得するためのブロック「SearchTradingSignals」で比較されます。