159753>>: Уважаемые господа, я столкнулся с проблемой, связанной с функцией OrderSend, а именно у меня не открывается ордер. К примеру, если присоединить этот советник к графику - extern double StopLoss = 30; extern double TakeProfit = 30; extern double lot = 0.1; double SL,TP; string Symb; int start() { Symb=Symbol(); SL =Bid - (StopLoss*Point); TP =Bid + (TakeProfit*Point); OrderSend(Symb,OP_BUY,lot,Ask,3,SL,TP); if(OrdersTotal()>0) Alert("Ордер Buy открыт"); if(OrdersTotal()==0) Alert("Ордер Buy открыть не удалось т.к. возникла ошибка №",GetLastError()); Alert("Point = ",Point); return; } то терминал выдаст ошибку № 130 (неправильные стопы), а значение Point будет = 0. Я думаю, что всё из-за возвращаемого значения Point (хотя кто его знает). В общем кто знает "где собака зарыта " помогите. Кстати, значение Point должно = 0 или нет?
Вы не моглы бы весь скрипт выложить? Я имею ввиду вместе с объявлениями переменных массивов и т.д.
これがそのスクリプトです。動作確認したところ、サイドバーでもダブルでも問題なく読み取れました。
スペシャリストはすぐに「型変換ではなく、配列を見てください」と言ったのですが......。
StatBars さん、Vininさん、回答してくださった皆さん、どうもありがとうございました。
問題は、私の配列が動的だったことです。 そして、そこにはある種の型変換の特異性があります。
決定的な長さの配列に調整し、 StrToDoubleによる型変換は時計のようにうまくいきました。
本当にありがとう。
ファイルでの作業というのは便利な ものです。今、考えているところです。
Джентльмены, вопрос такой:
В тестере вот такая штука:
в журнале выдает "0.0000".
А в терминале в реал-тайме выдает правильные значения.
Как с этим бороться?
А?
А?
>>コードを出して、詳細を教えてください。выкладывай код, и все подробней
ビニン、ビカス
.csvの更新ありがとうございます。
私はちょっと......混同している)
例えば、このEAをチャートに貼り付けると、
extern double StopLoss = 30;
extern double TakeProfit = 30;
extern double lot = 0.となります。1;
double SL,TP;
string Symb;
int start()
{
Symb=Symbol();
SL =Bid - (StopLoss*Point);
TP =Bid + (TakeProfit*Point);
OrderSend(Symb,OP_BUY,lot,Ask,3,SL,TP);
if(OrdersTotal()>0) Alert("Buy order opened");
if(OrdersTotal()==0) Alert("Buy order failed because.error #",GetLastError());
Alert("Point = ",Point);
return;
}
端末にはエラー#130(間違った停止位置)が表示され、Point 値は 0 になります。
ポイント還元があるからだと思う(誰にもわからないけど)。
一般的に誰が「犬がどこに埋まっているか」を知っているヘルプ。
ところで、Pointの値=0にすべきなのか、そうでないのか。
親愛なる皆様、OrderSend機能で問題が発生しました、つまり私の注文が開きません。
例えば、このEAをチャートに貼り付けると-。
extern double StopLoss = 30;
extern double TakeProfit = 30;
extern double lot = 0.1;
ダブルSL,TP。
文字列 Symb;
int start()
{
Symb=Symbol()です。
SL =Bid - (StopLoss*Point)です。
TP =Bid + (TakeProfit*Point);
OrderSend(Symb,OP_BUY,lot,Ask,3,SL,TP)を実行。
if(OrdersTotal()>0) Alert("Buy order opened");
if(OrdersTotal()==0) Alert("The Buy order failed to open due to error #",GetLastError());
Alert("ポイント = ",ポイント);
を返します。
}
と表示され、Pointの値は=0となります。
ポイント還元があるからだと思う(誰にもわからないけど)。
一般的に、誰が「犬がどこに埋まっているか」を知っているヘルプ。
ところで、Pointの値=0にすべきなのか、そうでないのか。
すべて正常に動作しています。少なくとも私にとってはУважаемые господа, я столкнулся с проблемой, связанной с функцией OrderSend, а именно у меня не открывается ордер.
К примеру, если присоединить этот советник к графику -
extern double StopLoss = 30;
extern double TakeProfit = 30;
extern double lot = 0.1;
double SL,TP;
string Symb;
int start()
{
Symb=Symbol();
SL =Bid - (StopLoss*Point);
TP =Bid + (TakeProfit*Point);
OrderSend(Symb,OP_BUY,lot,Ask,3,SL,TP);
if(OrdersTotal()>0) Alert("Ордер Buy открыт");
if(OrdersTotal()==0) Alert("Ордер Buy открыть не удалось т.к. возникла ошибка №",GetLastError());
Alert("Point = ",Point);
return;
}
то терминал выдаст ошибку № 130 (неправильные стопы), а значение Point будет = 0.
Я думаю, что всё из-за возвращаемого значения Point (хотя кто его знает).
В общем кто знает "где собака зарыта " помогите.
Кстати, значение Point должно = 0 или нет?
Pointが0であるはずがない、おそらく5桁目なので、print(Alert)すると0になる(print(Alert)はDoubleToStr文字列に変換しないと4tsnackまで出力される...)。
TakeProfitとStopLossを10倍にしてみてください。