//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 02.07.2013 |//| Описание : Выполняет корректирование ценовых уровней под STOPLEVEL. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование торгового инструмента |//| op - торговая операция |//| pp - цена открытия/установки |//| sl - ценовой уровень StopLoss |//| tp - ценовой уровень TakeProfit |//+----------------------------------------------------------------------------+void CorrectingPrice(string sy, int op, double& pp, double& sl, double& tp) {
if (sy=="" || sy=="0") sy=Symbol();
RefreshRates();
int di=MarketInfo(sy, MODE_DIGITS);
int msl=MarketInfo(sy, MODE_STOPLEVEL);
int sp=MarketInfo(sy, MODE_SPREAD);
double mp=MarketInfo(sy, MODE_POINT);
double pa=MarketInfo(sy, MODE_ASK);
double pb=MarketInfo(sy, MODE_BID);
double ds=NormalizeDouble(pp-sl, di);
double dp=NormalizeDouble(pp-tp, di);
if (msl==0) msl=2*sp;
switch (op) {
case OP_BUY:
pp=pa;
sl=pp-ds;
tp=NormalizeDouble(pp-dp, di);
if (sl>pp-msl*mp) sl=pp-msl*mp;
if (tp>0 && tp<pp+msl*mp) tp=pp+msl*mp;
break;
case OP_SELL:
pp=pb;
sl=NormalizeDouble(pp-ds, di);
tp=pp-dp;
if (sl>0 && sl<pp+msl*mp) sl=pp+msl*mp;
if (tp>pp-msl*mp) tp=pp-msl*mp;
break;
case OP_BUYLIMIT:
if (pp>pa-msl*mp) {
pp=pa-msl*mp;
sl=pp-ds;
tp=NormalizeDouble(pp-dp, di);
}
if (sl>pp-msl*mp) sl=pp-msl*mp;
if (tp>0 && tp<pp+msl*mp) tp=pp+msl*mp;
break;
case OP_BUYSTOP:
if (pp<pa+msl*mp) {
pp=pa+msl*mp;
if (sl>0) sl=pp-ds;
if (tp>0) tp=NormalizeDouble(pp-dp, di);
}
if (sl>pp-msl*mp) sl=pp-msl*mp;
if (tp>0 && tp<pp+msl*mp) tp=pp+msl*mp;
break;
case OP_SELLLIMIT:
if (pp<pb+msl*mp) {
pp=pb+msl*mp;
sl=NormalizeDouble(pp-ds, di);
tp=pp-dp;
}
if (sl>0 && sl<pp+msl*mp) sl=pp+msl*mp;
if (tp>pp-msl*mp) tp=pp-msl*mp;
break;
case OP_SELLSTOP:
if (pp>pb-msl*mp) {
pp=pb-msl*mp;
sl=NormalizeDouble(pp-ds, di);
tp=pp-dp;
}
if (sl>0 && sl<pp+msl*mp) sl=pp+msl*mp;
if (tp>pp-msl*mp) tp=pp-msl*mp;
break;
default:
Message("CorrectingPrice(): Неизвестная торговая операция!");
break;
}
}
int min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛdouble min_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МИНИМУМА
min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
Hi all againJ さんが書いてくださったアドバイスを前回の投稿に当てはめてみたのですが、役に立ちませんでした。 まだエラー130Lが出ますが、 ストップロスそのものではなく、建値が原因だと思わ れます。 このようにローソク足数x本分の最大値・最小 値を決定することで、買いストップ・売りストップの始値を求めます。
int max_bars= iHighest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble max_Price=iHigh(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
max_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
); //КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ДЛЯ ПОКУПАК*********** //----ПОЛУЧЕНИЕ ДАННЫХ ДЛЯ ОТЛОЖЕННЫХ ПРОДАЖint min_bars= iLowest(NULL, // ТЕКУЩИЙ СИМВОЛ
PeriodForWork_pending_orders,// ТФ ДЛЯ ПОИСКА МАКСИМУМА УСТАНОВКИ ОТЛОЖЕННОГО ОРДЕРАMODE_HIGH,// ИЩЕМ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕ ХАЙ
range_max // ДИАПОЗОН ПОИСКА ИЗ ЭН СВЕЧЕЙ
); // ПОЛУЧАЕМ НОМЕР СВЕЧИ НА КОТОРОЙ ИМЕЕТСЯ МАКСИМАЛЬНОЕ ЗНАЧЕНИЕdouble min_Price=iLow(Symbol(),// СИМВОЛ ТЕКУЩЕГО ИНСТРУМЕНТА(НА КОТОРОМ РАБОТАЕТ ГРААЛЬ;-)
PeriodForWork_pending_orders, // ТФ НА КОТОРОМ АСЧИТЫВАЕМ ЦЕНУ МАКСИМУМА
min_bars// НА КАКОМ БАРЕ БЫЛ МАКС ТОТ И ПОДСТАВИМ;)
); // КОНЕЦ АЙЛОУ
Hi all againJ さんが書いてくださったアドバイスを前回の投稿に当てはめてみたのですが、役に立ちませんでした。 まだエラー130Lが出ますが、 ストップロスそのものではなく、建値が原因だと思わ れます。 このようにローソク足数x本分の最大値・最小 値を決定することで、買いストップ・売りストップの始値を求めます。
私は、このようにオフセットを設定するための価格を計算しました(マカー、あなたは少なくとも私は触れないタイプです;-))。
計算された値が許容範囲内にあるかどうかを確認するにはどうすればよいのでしょうか。また、計算された値が許容範囲より小さい場合、注文はとにかく最小限の距離で開かれることを確認するにはどうすればよいのでしょうか。
これを試してみてください。
きっとわかると思うんです。
これを試してみてください。
コツがつかめそうです。
Alexey、このコードの一部をどうもありがとうございました。しかし、残念ながら脳梗塞の影響で他の人のコードを読むことができません。このコードの使い方の説明と、何をどのように付ければいいのか、お勧めを教えてもらってもいいでしょうか。
ここで、私の頭に浮かんだのはこんな感じでx-barの最低 価格を探してました。
しかし、最低価格を安値ではなく、aihaiとしたため、これは正しくありません。
だから、難しいことでなければ、割引コードの一部を使用する方法を送ってください...。
Hi all againJ さんが書いてくださったアドバイスを前回の投稿に当てはめてみたのですが、役に立ちませんでした。 まだエラー130Lが出ますが、 ストップロスそのものではなく、建値が原因だと思わ れます。 このようにローソク足数x本分の最大値・最小 値を決定することで、買いストップ・売りストップの始値を求めます。
私は全く同じストップとatpを使い、固定で成行注文もエラーなく開くので、問題はストップにあるのではありません。逆指値注文を設定するための価格の計算に問題があることを意味します。私はこのように注文そのものをオープンします。
P/Sと言い忘れましたが、保留中の注文を使って、ポジションを開くためのある種の価格フィルターをシミュレートしたいと思います。言い換えれば、価格が正しい方向に行けば、保留中の注文は発動しますが、そうでなければ、キャンセルされ、私は市場から退出することになるのです。初値の決め方で間違っているところは?また、価格フィルターで簡単に解決する方法はないでしょうか?
p/s とても親切に、適用できるコードを書いた場合、コードを読むのに深刻な問題があるので、その詳細な説明を書いてください。詳しい説明というのは、このコードは何のためにあるのか、どのように応用できるのか(変数にくっつけて何かする、とか、コードへのコメントをもっとわかりやすく書いてください)、ということです。よろしくお願いします ;-)知識を持っており、経験を持っているP / Sは、によって行くことはありません兄弟的に役立つ - 周りにねじ込むことはありません;-)杯OPを完了する必要があります;-)。
Hi all againJ さんが書いてくださったアドバイスを前回の投稿に当てはめてみたのですが、役に立ちませんでした。 まだエラー130Lが出ますが、 ストップロスそのものではなく、建値が原因だと思わ れます。 このようにローソク足数x本分の最大値・最小 値を決定することで、買いストップ・売りストップの始値を求めます。
私は全く同じストップとatpを使い、固定で成行注文もエラーなく開くので、問題はストップにあるのではありません。保留注文を設定するための価格の計算に問題があることを意味します。私はこのように注文そのものをオープンします。
つまり、価格が正しい方向に進めば、保留中の注文が発動し、そうでなければキャンセルされ、私は市場から退場することになります。初値の決め方で間違っているところは?また、価格フィルターで簡単に解決する方法はないでしょうか?
p/s とても親切に、適用できるコードを書いた場合、コードを読むのに深刻な問題があるので、その詳細な説明を書いてください。詳しい説明というのは、このコードは何のためにあるのか、どのように応用できるのか(変数にくっつけて何かする、とか、コードへのコメントをもっとわかりやすく書いてください)、ということです。よろしくお願いします ;-)P / Sの知識を持っており、経験を持っている人が行くことはありません、兄弟的に役立つ - 周りにねじ込むことはありません;-)私は聖杯O_oを終了する必要があります;-)。
iLowest関数において、MODE_HIGHの代わりに、MODE_LOWを挿入します。
ヒントを教えてください。グラフに線分を描きました。セグメントの開始価格と終了価格を知りたいのですが。それは可能なのか?
ヒントを教えてください。グラフに線分を描きました。セグメントの開始価格と終了価格を知りたいのですが。それは可能なのか?
ヒントを教えてください。グラフに線分を描きました。セグメントの開始価格と終了価格を知りたいのですが。それは可能なのか?
このセグメントには、オリジナルの名称を付けることが望まれる
iLowest関数において、MODE_HIGHの代わりに、MODE_LOWを挿入します。
仲間だ!
誰か助けて