В общем, я порядочный балбес, что тут сказать! Специалист мне сразу говорил, смотреть на массивы, а не на приведение типов...
StatBars, Vinin, все кто откликнулись, спасибо вам большое.
Проблема заключалась в том, что у меня массивы были динамические. а там определенная специфика при приведении есть. подстроился под массивы детерминированной длины, и приведение типов с StrToDouble заработало, как по маслу.
Спасибо большое всем еще раз. Работа с файлами - вещь полезная. Стараюсь сейчас в ней разобраться.
Уважаемые господа, я столкнулся с проблемой, связанной с функцией 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 или нет?
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 или нет?
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 или нет?
Point не может равняться 0, у Вас скорее всего 5-й знак и поэтому когда принтишь(Алерт) получается 0(принт(Алерт) выводит до 4 цнаков, если не преобразовать в строку DoubleToStr...) попробуйте TakeProfit и StopLoss умножить на 10
Вы не моглы бы весь скрипт выложить? Я имею ввиду вместе с объявлениями переменных массивов и т.д.
Вот скрипт, проверил работает, всё нормально прочитал и в стороковом и в double.
Специалист мне сразу говорил, смотреть на массивы, а не на приведение типов...
StatBars, Vinin, все кто откликнулись, спасибо вам большое.
Проблема заключалась в том, что у меня массивы были динамические. а там определенная специфика при приведении есть.
подстроился под массивы детерминированной длины, и приведение типов с StrToDouble заработало, как по маслу.
Спасибо большое всем еще раз.
Работа с файлами - вещь полезная. Стараюсь сейчас в ней разобраться.
Джентльмены, вопрос такой:
В тестере вот такая штука:
в журнале выдает "0.0000".
А в терминале в реал-тайме выдает правильные значения.
Как с этим бороться?
А?
А?
выкладывай код, и все подробнейвыкладывай код, и все подробней
Vinin, Bicus
Спасибо, просветили на счет .csv
Что-то я совсем с утра того... языки перепутал)
К примеру, если присоединить этот советник к графику -
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 или нет?
Уважаемые господа, я столкнулся с проблемой, связанной с функцией 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 или нет?
Все нормально работает. По крайней мере у меняУважаемые господа, я столкнулся с проблемой, связанной с функцией 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-й знак и поэтому когда принтишь(Алерт) получается 0(принт(Алерт) выводит до 4 цнаков, если не преобразовать в строку DoubleToStr...)
попробуйте TakeProfit и StopLoss умножить на 10