if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3 && Buy_Condition_10)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Позиция на покупку имеется");
return; // не добавлять к открытой позиции на покупку
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.symbol = _Symbol; // символ
mrequest.magic = EA_Magic; // Magic Number
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
if(Buy_Condition_4 || Buy_Condition_5)
{
if(Buy_Condition_6)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Позиция на покупку во Флэте есть");
return; // не добавлять к открытой позиции на покупку
}
if(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Alert("Закрываю ордер Sell флэт!!!");
mrequest.action = TRADE_ACTION_DEAL;// немедленное исполнение
mrequest.symbol = _Symbol; // символ
mrequest.magic = EA_Magic; // Magic Number
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type = ORDER_TYPE_BUY; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("тикет закрытия Sell флэт #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:",GetLastError());
return;
}
}
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.symbol = _Symbol; // символ
mrequest.magic = EA_Magic; // Magic Number
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Buy на тренд успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy тренд не выполнен - код ошибки:",GetLastError());
return;
}
}
}
....
...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
if(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Alert("Закрываю ордер BUY!!!");
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.symbol = _Symbol; // символ
mrequest.magic = EA_Magic; // Magic Number
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type = ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("тикет закрытия Buy #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
}
}
if(Buy_Close_4 || Buy_Close_5)
{
if(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Alert("Закрываю ордер BUY!!!");
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.symbol = _Symbol; // символ
mrequest.magic = EA_Magic; // Magic Number
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type = ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("тикет закрытия Buy #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера закрытия Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
}
Boris.45:
Time_H1[1][0]は、まだパラメータが形成されていないゼロバーのオープン時間です。私の勘違いかもしれませんが、私の経験では、ゼロバーのパラメータを使って時系列を形成すると、歪んでしまうことがあります。
よし、質問を明確にしよう。
Time_H1[nomer_instr][i]=Time_buf[i];" と "Time_H1[1][1]=2011.01.03 11:00:00" の場合、Time_buf[0] は何を返すのでしょうか?
ある(特定の)ポジションをクローズするためのリンクを送ってください。
つまり、ある時点で、ポジションを閉じる 条件が満たされたとき、例えばBUYとすると、Expert Advisorは(その時点で)開いているBUYのポジションをすべて閉じます。今、ある(特定の)BUYポジションをクローズする必要があるときに、問題に直面しました。例えば、BUYポジションを建てるときは、特定の指定をすることができますが、クローズするときは、条件として「BUY」を指定する必要があります。
例えば、BUYポジションをオープンするときは、特定の指定をすることができますが、クローズするときは、その「存在」を指定する必要があります。
つまり、同じシンボルに対して異なる「ポジション」を閉じるということですか?
そうでもないんです。
買いフラットが開いていると、買いトレンドのクローズができないんです。その逆も然り。
つまり、同じシンボルについて、フラット(フラットが開いている場合)またはトレンド(トレンドが開いている場合)のどちらかの特定のポジションを決済することです。
つまり、1つのシンボルについて、フラット(オープニングフラットが条件)またはトレンド(オープニングトレンドが条件)のいずれかの特定のポジションを決済 することです。
わかりました、質問を明確にします。
Time_H1[nomer_instr][i]=Time_buf[i];" と "Time_H1[1][1]=2011.01.03 11:00:00" の場合、Time_buf[0] は何を返すのでしょう。
私がEAで実現しようとしている考え方を説明してみます。
標準関数として、CopyTime(), CopyOpen(), CopyHigh() 等があり、対応する配列 Time_buf[], Open_buf[], High_buf[] 等を使用する。
これらの関数を使用すると、異なる時間枠と異なる通貨のヒストリカルデータを取得することができます。この場合、Time_buf[0]はゼロバーの開始時刻となる。
High_buf[0]は、ある通貨の価格が最後に到着した瞬間のゼロバーでの最大値です。
そして、時間枠ごとにTime、Openなどのパラメータごとに2次元の配列を作成します。次に、タイムフレームH1について、以下の配列を用意します。
Time_H1[i][j]、Open_H1[i][j]、High_H1[i][j]などの配列で、各行は特定の通貨の履歴データ専用になります。このように
通貨番号によるループを使って for( i=1; i<=nomer_instr; i++ ) 過去のデータ Time_buf[j], High_buf[j] などを配列の対応する行で上書きしています。
Time_H1[i][j]、High_H1[i][j]など。
ティックを使って取引する場合、ゼロバーから現在のパラメータを使用することができます。当然、現在のゼロバーの瞬間のパラメータは
ティックの代わりにバーを使用するExpert Advisorを使用しています。私は、EAがバーで動作しているときに
High_buf[0]とLow_buf[0]の値は、ゼロバーが閉じた瞬間の履歴値ではなく、ランダムな値であることがわかります。したがって、もし私たちが
のパラメータがゼロバーの場合、そのパラメータの履歴シーケンス全体が歪みます。だから、私はゼロバーのパラメータを使わないのです。
長くてすみません。
Boris.45:
私がExpert Advisorに実装しようとしているアイデアを説明しようと 思います。
アイデアについて聞いたわけではないのですが :)
それが、あなたのおっしゃる配列の要素を返す値は何ですか?
アドバイスお願いします
マーケット一覧の通貨ペアの背景色を変更する方法
あるいは、色を完全に取り除くこともできます。
ありがとうございました。