и как среди такого богатства неформатированного исходного кода разбираться?
тебе нужно найти не сбалансированную (пару открывающей/закрывающей фигурной скобке), а ты выложил не "читабельный" код, для этого есть специальная кнопка [code] , нажимаешь на нее , а затем между появившимися тэгами вставляешь свой код
первый раз в первый класс :)
//+------------------------------------------------------------------+ //| Serfing.mq4 | //| Zmey | //| xzmey@yandex.ru | //+------------------------------------------------------------------+ extern double StopLoss = 50; extern double TakeProfit = 30; extern double TrailingStop = 15; extern double Lots = 0.1; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { { int cnt=0, ticket, total; // теперь надо определится в какок состоянии торговый терминал? // проверим, есть ли ранее открытые позиции или ордеры? total=OrdersTotal(); if(total<1) // нет ниодного открытого ордера // на всякий случай проверим, есть ли у нас свободные деньги на счету? if(AccountFreeMargin()<(3000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); // денег нет-выходим } //проверяем возможность открытия позиции по BAY if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Ask-StopLoss*Point, "serfing sample",16384,0,Red); //исполняем if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } //проверяем возможность открытия позиции по SELL if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,Bid+StopLoss*Point, "serfingsample",16384,0,Red); //исполняем if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } //переходим к важной части эксперта - контролю открытых позиций //`важно правильно войти в рынок, но выйти - еще важнее...` for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL OrderSymbol()==Symbol()) //инструмент совпадает? { if(OrderType()==OP_BUY) //открыты позиция BUY { //проверим, может пора закрывать позицию? if(Bid<OrderOpenPrice()) //позиция в убытке то: { if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию return(0); //выходим } if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) //разворот движения { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию return(0); //выходим } } if(Bid>OrderOpenPrice()) //позиция в прибыли то: { if(Bid<=OrderOpenPrice+8*Point) //прошли 8 пунктов { if(Bid<=OrderOpenPrice) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию return(0); //выходим } } if(Bid=OrderOpenPrice+10*Point) //прошли 10 пунктов { if(Bid<=OrderOpenPrice+5*Point) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию return(0); //выходим } } if(Bid=OrderOpenPrice+15*Point) //прошли 15 пунктов { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-5*Point*StopLoss,OrderTakeProfit(),0,Red); return(0); } if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию return(0); //выходим } } } if(OrderType()==OP_SELL) //открыты позиция SELL { //проверим, может пора закрывать позицию? if(Ask>OrderOpenPrice()) //позиция в убытке то: { if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию return(0); //выходим } if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) //разворот движения { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию return(0); //выходим } } if(Ask<OrderOpenPrice()) //позиция в прибыли то: { if(Ask>=OrderOpenPrice+8*Point) //прошли 8 пунктов { if(Ask>=OrderOpenPrice) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию return(0); //выходим } } if(Ask=OrderOpenPrice+10*Point) //прошли 10 пунктов { if(Ask>=OrderOpenPrice+5*Point) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию return(0); //выходим } } if(Ask=OrderOpenPrice+15*Point) //прошли 15 пунктов { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+5*Point*StopLoss,OrderTakeProfit(),0,Red); return(0); } if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию return(0); //выходим } } } } return(0); } // конец.
....я, например, когда пишу, ставлю перед слудующей скобкой на одну табуляцию больше.. потом намного проще разгребать подобные проблемы ;)
int start() { if ( ..... ) { while (....) { ... } } }
небрежно написанный код...
после int start две подряд открывающие фигурные скобки.
после if(total<1) наоборот не хватает открывающей фигурной скобки
и в конце перед ретурном не хватает закрывающей фигурной скобки.
а дальше..... 44 ошибки
после int start две подряд открывающие фигурные скобки.
после if(total<1) наоборот не хватает открывающей фигурной скобки
и в конце перед ретурном не хватает закрывающей фигурной скобки.
а дальше..... 44 ошибки
Ну не то чтобы небрежно... я первый раз пишу и не программист я.
Если не затруднит ответить, какие именно ошибки?
Если не затруднит ответить, какие именно ошибки?
Ну не то чтобы небрежно... я первый раз пишу и не программист я.
Если не затруднит ответить, какие именно ошибки?
Если не затруднит ответить, какие именно ошибки?
Все 44 ошибки? Шутник :)
Все 44 ошибки? Шутник :)
:)))
в каталоге эксперт , есть каталог лог, там текстовый файл в который выводятся сообщения об ошибках, можно также посмотреть вкладку журнал .
:))
все все увидел
тока сразу хочется нарисовать :((
Блин никогда стока ошибок невидел!
все все увидел
тока сразу хочется нарисовать :((
Блин никогда стока ошибок невидел!
интересно, в ордере на открытие устанавливается только стоплосс или тейпрофит

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может кто из опытных подскажет что сдесь не так:
//+------------------------------------------------------------------+
//| 1.mq4 |
//| Zmey |
//| xzmey@yandex.ru |
//+------------------------------------------------------------------+
extern double StopLoss = 50;
extern double TakeProfit = 30;
extern double TrailingStop = 15;
extern double Lots = 0.1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
{
int cnt=0, ticket, total;
// теперь надо определится в какок состоянии торговый терминал?
// проверим, есть ли ранее открытые позиции или ордеры?
total=OrdersTotal();
if(total<1)
// нет ниодного открытого ордера
// на всякий случай проверим, есть ли у нас свободные деньги на счету?
if(AccountFreeMargin()<(3000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0); // денег нет-выходим
}
//проверяем возможность открытия позиции по BAY
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,Ask-StopLoss*Point,
"serfing sample",16384,0,Red); //исполняем
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
//проверяем возможность открытия позиции по SELL
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,Bid+StopLoss*Point,
"serfingsample",16384,0,Red); //исполняем
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
//переходим к важной части эксперта - контролю открытых позиций
//`важно правильно войти в рынок, но выйти - еще важнее...`
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // это открытая позиция? OP_BUY или OP_SELL
OrderSymbol()==Symbol()) //инструмент совпадает?
{
if(OrderType()==OP_BUY) //открыты позиция BUY
{
//проверим, может пора закрывать позицию?
if(Bid<OrderOpenPrice()) //позиция в убытке то:
{
if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2]) //разворот движения
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid>OrderOpenPrice()) //позиция в прибыли то:
{
if(Bid<=OrderOpenPrice+8*Point) //прошли 8 пунктов
{
if(Bid<=OrderOpenPrice)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid=OrderOpenPrice+10*Point) //прошли 10 пунктов
{
if(Bid<=OrderOpenPrice+5*Point)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Bid=OrderOpenPrice+15*Point) //прошли 15 пунктов
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-5*Point*StopLoss,OrderTakeProfit(),0,Red);
return(0);
}
if(High[4]<High[3] && High[2]>High[3] && High[1]<High[2] && Open[1]<=Close[2])
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию
return(0); //выходим
}
}
}
if(OrderType()==OP_SELL) //открыты позиция SELL
{
//проверим, может пора закрывать позицию?
if(Ask>OrderOpenPrice()) //позиция в убытке то:
{
if(CurTime-OrderOpenTime>14400) //позиция открыта более 3 баров
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2]) //разворот движения
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask<OrderOpenPrice()) //позиция в прибыли то:
{
if(Ask>=OrderOpenPrice+8*Point) //прошли 8 пунктов
{
if(Ask>=OrderOpenPrice)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask=OrderOpenPrice+10*Point) //прошли 10 пунктов
{
if(Ask>=OrderOpenPrice+5*Point)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
if(Ask=OrderOpenPrice+15*Point) //прошли 15 пунктов
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+5*Point*StopLoss,OrderTakeProfit(),0,Red);
return(0);
}
if(High[4]>High[3] && High[2]<High[3] && High[1]>High[2] && Open[1]>=Close[2])
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию
return(0); //выходим
}
}
}
}
return(0);
}
// конец.