PRAskL=Ask-Point*TakeProfit+Spread; // цена OpenBuyLimitOrder
PRAskS=Ask+Point*TakeProfit+Spread; // цена OpenBuyStopOrder
PRBidL=Bid+Point*TakeProfit-Spread; // цена OpenSellLimitOrder
PRBidS=Bid-Point*TakeProfit-Spread; // цена OpenSellStopOrder
где
TakeProfit - глобальная переменая и грубо говоря ее значение постояно
Spread - временая переменая,
но мне не удобно брать цену через рынок и решил напрямую вот так
for(int h=1; h<=OrdersTotal(); h++)
{if (OrderSelect(h-1,SELECT_BY_POS)==true)
int Tip=OrderType();
if(HaveBuyOrder == true)continue;
double PRAskS=OrderStopLoss();
double PRAskL=OrderTakeProfit();
int Tip1=OrderType();
if(HaveSellOrder == true)continue;
double PRBidS=OrderStopLoss();
double PRBidL=OrderTakeProfit();
но оно выдает ошибки
Ошибка № 4107 при открытиии SELL ордера
invalid takeprofit forOrderSend function
Ошибка № 4107 при открытиии BUY ордера
invalid takeprofit forOrderSend function
ストップからの注文の 価格が必要なのですが、以前はこのように注文を保留して いました。
ストップと円の価格が必要で、スプレッドを考慮する必要があります。
ストップからの注文の価格が必要なのですが、以前はこのように注文を保留していました。
この問題を解決するにはどうしたらいいでしょうか。ストップで円を取って利益を得ることができ、同時にスプレッドも考慮に入れなければなりません。
Andrei, またしても、コードが少なすぎます。関数 OrderSend にエラーがありますが、このコードセクションにはその関数やパラメータは見当たりません。すでにある成行注文のストップロスやテイクプロフィットに基づき、保留注文を出したいですか?
Andreiさん、またしてもコードが少なすぎます。関数 OrderSend にエラーがあり、この部分にはその関数やパラメータは見当たりません。すでにある成行注文のストップロスやテイクプロフィットのデータをもとに、保留注文を出したいのか?
そうです、既存の成行注文のストップロスやテイクプロフィットのデータをもとに、保留中の注文を出すのです
コード全体が大きすぎて、自分にとってどう動くか、どうやろうとしたかの例ですが、正しくないので、どうやったら正しくできるのか?
ルールに基づいた例では、注文は1つだけ、つまり売りです。
つまり、4つの保留中の注文について、買い損切りと売り損切りの始値、および買いストップと売りストップはすべて同じです。
ストップで買うなど、寄り付きで一気に買い指値が開きたいのですが。
GBPJPY,H1:売り注文 開始:137.16
GBPJPY,H1: open #3897394 sell limit 0.30 GBPJPY at 137.16 sl: 138.36 tp: 135.96 ok.
GBPJPY,H1:売り注文開始 : 134.76
GBPJPY,H1: 開く #3897393 sell stop 0.10 GBPJPY at 134.76 sl: 135.96 tp: 133.56 ok.
GBPJPY,H1:買い注文開始:134.76
GBPJPY,H1: 開く #3897392 買い指値 0.30 GBPJPY at 134.76 sl: 133.56 tp: 135.96 ok.
GBPJPY,H1:買い注文開始:137.16
GBPJPY,H1: open #3897391 buy stop 0.10 GBPJPY at 137.16 sl: 135.96 tp: 138.36 ok.
GBPJPY,H1:売り注文開始:135.96
GBPJPY,H1: 開く #3897390 135.96 で 0.10 GBPJPY を売る sl: 137.16 tp: 134.76 ok.
GBPJPY,H1:買い注文開始 : 136.04
GBPJPY,H1: 開く #3897389 136.04で0.10 GBPJPYを買う sl: 134.84 tp: 137.24 ok。
GBPJPY,H1:初期化されました。
GBPJPY,H1インプット:StopLoss=120; TakeProfit=120; Lot=0.1; Magic=777; Slippage=5;
GBPJPY,H1:正常にロードされました。
解き明かすのを手伝ってください。
テスト終了後にテスターで開くことができるチャートでは、EAのベースとなる指標が必ずしも描画されません。これは直るのでしょうか?直るとしたらどのように直るのでしょうか? 答えてくださいもしかしたら、私の質問に答えがあるのかもしれませんね。
もしかしたら、私の質問に対する答えがあるかもしれません。
注意しなければならないのは、テスト中のエキスパートから直接呼び出された指標だけがテストチャートに表示されることです。
テスト中のExpert Advisorから直接呼び出された指標のみがテストチャートに表示されることに注意が必要です。
イゴールさん、ありがとうございます!基本はやみくもに覚えるしかなかったんです。
ということで、上記のコードを修正して、以下のように変数の値を設定する方法をご存知の方はいらっしゃいますか?
PRAskL=買い注文のストップロス+スプレッド
PRAskS=買い注文のTakeProfit+スプレッド
PRBidL=StopLoss売りスプレッド注文
PRBidS=テイクプロフィット・売り・スプレッド注文
ということで、上記のコードを修正して、以下のように変数の値を設定する方法をご存知の方はいらっしゃいますか?
PRAskL=StopLoss 注文 Buy + Spread
PRAskS=TakeProfit 注文 Buy + Spread
PRBidL=StopLoss 注文 Sell-Spread
PRBidS=TakeProfit 注文 Sell-Spread
間違ったストップに関連するエラーがある場合、ストップレベルの大きさをチェックします。それを使って保留中の注文も チェックします - それ以下にはできません...
例えば、こんな感じです。
double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //ストップ安の最小設定距離
間違ったストップに関連するエラーが発生した場合、ストップレベルの大きさをチェックします。それを使って、保留中の注文もチェックします。
例えば、こんな感じです。
double Level_stop=MarketInfo(Symbol(),MODE_STOPLEVEL ); //最小のストップ設定距離
最後のものはエラーなく開きますが、Sellのデータしか開きません。ログからの切り抜きで、私が説明した正しい価格分布ではありません。
それがこちらです。
PRAskL=StopLoss 買い + スプレッド注文
PRAskS=買い+スプレッド注文のTakeProfit。
PRBidL=StopLoss売りスプレッド注文
PRBidS=テイクプロフィット・売り・スプレッド注文
現在はこのような状態です。
PRAskL=StopLoss売り注文
PRAskS=TakeProfit売り注文
PRBidL=StopLoss売り注文
PRBidS=TakeProfit売り注文