// в OnTick()double open_nzdusd_CUR=GetNormalizeOpenPriceBySymbol("NZDUSD",Period(),0); // цена открытия текущей свечи NZDUSDdouble open_audusd_M15=GetNormalizeOpenPriceBySymbol("AUDUSD",PERIOD_M15,1); // цена открытия прошлой свечи AUDUSD на M15//+------------------------------------------------------------------+// функция вне тела OnTick()//+------------------------------------------------------------------+double GetNormalizeOpenPriceBySymbol(string sy, int timeframe, int shift) {
int digits=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
return(NormalizeDouble(iOpen(sy,timeframe,shift),digits));
}
//+------------------------------------------------------------------+
オープニングでは、あくまでコンセプトそのものを紹介します。
string symbol="AUDUSD";
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int spread=(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
int value=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
int level=(value==0)?spread*2:value;
//---double sl_b=(StopLoss==0)?0:NormalizeDouble(fmin(ask-StopLoss*pt,ask-(level+1)*pt),digits);
double tp_b=(TakeProfit==0)?0:NormalizeDouble(fmax(ask+TakeProfit*pt,ask+(level+1)*pt),digits);
ticket_b=OrderSend(symbol,OP_BUY,Lots,ask,3,sl_b,tp_b,"",0,0,clrGreen);
//---double sl_s=(StopLoss==0)?0:NormalizeDouble(fmax(bid+StopLoss*pt,bid+(level+1)*pt),digits);
double tp_s=(TakeProfit==0)?0:NormalizeDouble(fmin(bid-TakeProfit*pt,bid-(level+1)*pt),digits);
ticket_s=OrderSend(symbol,OP_SELL,Lots,bid,3,sl_s,tp_s,"",0,0,clrRed);
こんにちは。私は、買い注文と売り注文を出した後、最初のバーの安値と高値からそれぞれStopLossを計算しようとしているのですが、何かアドバイスがありますか?しかし、結果は出ず、130のエラーが出ただけでした。よろしくお願いします。
OrderOpenPrice()がSLに近すぎるかどうか、ストップが「価格の右側」にあるかどうかをチェックします。こちらで お読みいただけます。
StopLossとTakeProfitの価格は、マーケットに近すぎることはできません。最小ストップ距離(pips)は、MarketInfo() 関数でMODE_STOPLEVELパラメータを使用して取得することができます。誤って停止した場合や正規化されていない場合はエラー 130 (ERR_INVALID_STOPS) が発生する。
この場合、つまり保留中の注文の場合、「市場」はその「保留中の始値」です。
MTからパソコンの現在のipアドレスを取得する方法を教えてください。
ストラテジーテスターのコマンドMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) これは、例えば、商品がEURUSDでバランス通貨がRURの場合に起こります......。といった組み合わせで私の理解では、バランス通貨は、通貨ペアの2番目の通貨名と同じでなければなりません。そうでない場合は、(ストラテジーテスターで)0値を返すので、目的の組み合わせでテストを行うことは不可能です。この問題を解決するにはどうすればいいのか。
ストラテジーテスターの コマンドMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) これは、例えば、商品がEURUSDでバランス通貨がRURの場合に発生します ...。といった組み合わせで私の理解では、バランス通貨は、通貨ペアの2番目の通貨名と同じでなければ なりません。そうでない場合は、(ストラテジーテスターで)ゼロ値を返すので、目的の組み合わせでテストを行うことは不可能です。この問題を解決するにはどうすればいいのか。
ハイライトがおかしい!EURUSD、GBPUSDなどで ユーロ建てで計算しています。オンにしたときだけ、最初のデータの前に0が出ることが あるので、TICKVALUEで計算する前に、if != 0という 条件を付けています。
テスターでは、MarketInfo()が 機能しない場合があるので、1ティックのおおよその価格を知り、IsTesting() || IsOptimization() || IsVisualMode() という条件で設定しています。
2つのペアを同時に取引するスクショを作るのを手伝ってください。
最初のペアの場合、変数は次のようになります。
double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);
2作目はどうなるんだろう?
または、最初の文字で取引を開始するコードは次のようになります。
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,", 0,0,Green))。
2つ目のシンボルのコードがどのように見えるか
2つのペアを同時に取引するスクショを作るのを手伝ってください。
最初のペアの場合、変数は次のようになります。
double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);
2作目はどうなるんだろう?
または、最初の文字で取引を開始するコードは次のようになります。
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,", 0,0,Green))。
2つ目のシンボルのコードがどのように見えるか
2つのペアを同時に取引するフクロウを作るのを手伝ってください。
最初のペアの場合、変数は次のようになります。
double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);
2作目はどうなるんだろう?
または、最初の文字で取引を開始するコードは次のようになります。
ticket=OrderSend(Symbol(,OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,", 0,0,Green))。
2つ目のシンボルのコードがどのように見えるか
オープニングでは、あくまでコンセプトそのものを紹介します。
トレードサーバーのリターンコードを 確認することなく