//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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;
}
}
どなたかご存知の方、アドバイスお願いします。Forex4youのGepard 5.0 Expert Advisorは、大きなマイナスでいくつかのトレードを開いています。どこで調整できるのですか?
設定を微調整したい場合は、履歴チェックを行うことができます。設定を確認し、プリセットの最初のステップを選択し、次にストップを 選択し、最適化をチェックすると、アドバイザーはすべてのオプションを実行し、テイクプロフィットと利益を変更します。
異なるということであれば、設定を調整することで意味を特定する必要があります
ウィンドウ表示の場合、チャート上の矢印はどのように表示するのですか?
チャートについては、すみません、読み違えていたようです。1つ目のインジケータの計算を利用した2つ目のインジケータを利用することも可能ですが
if (ticketbuy>0)
{
を返します。
}
この注文が0でなければ、それ以上注文を出すことはできません。ありがとうございます。
こんにちは、皆さん問題です。
TPが100の場合、どのように注文を出せばよいですか?
エラー130はEUR/USDのペアで表示されます。
KimさんのCorrectingPrice関数を使えばいいのかもしれませんが、始値・終値とは 何でしょうか?質問/入札
この機能はどのように使うのですか?
今日、私はゴールドを-9.58で取引開始しました。そして、その日は一日中、黒ずくめで過ごした。彼は何を望んでいるのか。
金の1pipの価格とスプレッドを見れば、すべてが明らかになることを期待しています。
ヒント:買いポジションはAsk価格でオープンし、BidはAskよりスプレッドの 分だけ小さくなります。ポジションを開くと同時に、スプレッドと同程度のマイナスですぐに建玉されます。つまり、必要なのはExpert Advisorではなく、あなた自身が基本を学ぶことなのです。
こんにちは、皆さん問題です。
TPが100の場合、どのように注文を出せばよいですか?
エラー130はEUR/USDのペアで表示されます。
KimさんのCorrectingPrice関数を使えばいいのかもしれませんが、始値・終値とは何でしょうか?質問/入札
この機能はどのように使うのですか?
テイクは100ではなく、始値から100pipsであるべきです。そのため、エラーが発生するのです。
始値から、買いの場合は100pips、売りの場合は100pipsを足し、ポイントに乗せるとテイクプライスになります。取引注文をサーバーに送信する前に、Takeが証券会社のStop-Levelの制限内であることを確認してください。続いてのご質問に対する回答はこちら です。
Takeは100ではなく、始値から100pipsに等しいはずです。そのため、エラーが発生するのです。
建値に100ポイントを加算(買いの場合)または減算(売りの場合)し、それにポイントを乗じたものがTake価格となります。取引注文をサーバーに送信する前に、Takeが証券会社のStop-Levelの制限内であることを確認してください。続いてのご質問に対する回答はこちら です。
ありがとうございます。しかし、BUYなどはTP(Ask+TP*Point)を計算しなければならないのは理解できました。
TP=100pipsが一度に設定されるわけではなく、例えば130pipsの時はうまくいくことが判明しました。 でも、マニュアルでやれば、最初にオーダーをセットして、TPを100pipsずつ締めていくことができます。
ブローカーはStopLeverageを0.00050に 設定しています。
多分、TPを開くとき、スプレッドなしで計算されますが、宣言された価格で計算されます。とはいえ、これは無茶な話だ。