Скорее всего ты лопухнулся здесь:
for (int i = 0; i < Object; i++) { string Name = ObjectName(i); if (ObjectType(Name) == OBJ_HLINE) { Price = ObjectGet(Name,OBJPROP_PRICE1); if (Price == Ask) return(Price);} }
Преждевременный выход из оператора for осуществляется посредством управляющей команды break, а не return. Сейчас он у тебя тупо перебирает все линии и назначает Price последнюю.
СПАСИБО.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
линии сколько бы их на графике не было .но пока ничего не получается.Помогите пожасуйста найти
ошибку.
//+------------------------------------------------------------------+
//| 2.mq4 |
//| Copyright © 2005, George-on-Don |
//| http://www.forex.aaanet.ru |
//+------------------------------------------------------------------+
#include <stdlib.mqh>
#include <stderror.mqh>
extern double Lots = 1;
extern int StopLoss = 50;
extern int TakeProfit = 100;
//=========================================================
int start()
{
int res; double SL; double TP;
//=========================================================
double Price = 0;
int Object = ObjectsTotal();
for (int i = 0; i < Object; i++)
{
string Name = ObjectName(i);
if (ObjectType(Name) == OBJ_HLINE)
{ Price = ObjectGet(Name,OBJPROP_PRICE1);
if (Price == Ask) return(Price);}
}
//================= ПОКУПКА ===============================
if(Ask > Price && Open[0]< Price && OrdersTotal() < 2)
{SL = Bid-StopLoss*Point; TP = Ask+TakeProfit*Point;
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",0,Blue);
if (res != -1)return;}
//================ ПРОДАЖА ================================
if(Bid < Price && Open[0]> Price && OrdersTotal() < 2)
{SL = Ask+StopLoss*Point; TP = Bid-TakeProfit*Point;
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",0,Red);
if ( res != -1) return;}
}