extern int tp = 350; extern int sl = 400; double Lots = 0.01; extern int TakeProfit = 150; extern int StopLoss = 150; bool mir; int start() { if(GetTypeLastClosePos("0", -1)!=OP_BUY) if(OrderProfit()<0) { mir = false; } if(OrderProfit()>0) { mir = true; } if(OrdersTotal()==0) { NewOrder (OP_BUY,Lots); } } //+------- ФУНКЦИЯ ОПРЕДЕЛЯЕТ ТИП ПОСЛЕДНЕЙ ЗАКРЫТОЙ ПОЗЫ. int GetTypeLastClosePos(string sy="NULL", int mn=-1) { // Инт наз фу-ции. string-пременная //строкового типа sy="0". mn=-1 datetime t; // datetime-переменая даты и времени. Обозначает числовое значение года, месяца, даты //(либо даты, месяца, года), часа, минуты и секунды.Константа обрамляется // одинарными кавычками и начинается с символа D. Допускается использование усечённого значения: либо без даты, //либо без времени, либо пустое значение.Примеры:datetime Compile = D''; datetime N_3 = D'12.05.2005 16:30:45'; int i, k=OrdersHistoryTotal(), r=-1; //OrdersHistoryTotal- опроделяет количество закрытых позиций и //удаленных ордеров в истории текущего счета if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (t<OrderCloseTime()) { t=OrderCloseTime(); r=OrderType(); } } } } } return(r); } //_______________---------------+++++++++++++====================__________________=========== int NewOrder(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена while(!IsTradeAllowed()) Sleep(100); if(Cmd==OP_BUY) {PR=Ask; if(TakeProfit>0) TP=Ask+TakeProfit*Point; if(StopLoss>0) SL=Ask-StopLoss*Point;} if(Cmd==OP_SELL) {PR=Bid; if(TakeProfit>0) TP=Bid-TakeProfit*Point; if(StopLoss>0) SL=Bid+StopLoss*Point;} int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE); if(tic<0) Print("Ошибка открытия ордера: ",GetLastError()); //---- Print() — Выдать сообщение в журнал. GetLastError() — Номер последней ошибки. return(tic); } // строчка вызова NewOrder::: NewOrder(OP_BUY,Lot); // bool mir () { NewOrder(OP_BUY,Lots); }
DmitriyN:
... ну, или отключить от интернета.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Данная сова по плану должна открывать один новый ордер бай, если он закрылся в плюс то открывает новый бай, если в минус то просто прекращает свою работу. Но эта зараза сразу открывает очень много ордеров, но мне нужно что бы открывался только один ордер.
extern int tp = 350;
extern int sl = 400;
double Lots = 0.01;
extern int TakeProfit = 150;
extern int StopLoss = 150;
bool mir;
int start()
{
if(GetTypeLastClosePos("0", -1)!=OP_BUY)
if(OrderProfit()<0)
{
mir = false;
}
if(OrderProfit()>0)
{
mir = true;
}
if(OrdersHistoryTotal()==0)
{
NewOrder (OP_BUY,Lots);
}
}
//+------- ФУНКЦИЯ ОПРЕДЕЛЯЕТ ТИП ПОСЛЕДНЕЙ ЗАКРЫТОЙ ПОЗЫ.
int GetTypeLastClosePos(string sy="NULL", int mn=-1) { // Инт наз фу-ции. string-пременна строкового типа sy="0". mn=-1
datetime t; // datetime-переменая даты и времени. Обозначает числовое значение года, месяца, даты (либо даты, месяца, года), часа, минуты и секунды.Константа обрамляется
// одинарными кавычками и начинается с символа D. Допускается использование усечённого значения: либо без даты, либо без времени, либо пустое значение.Примеры:datetime Compile = D''; datetime N_3 = D'12.05.2005 16:30:45';
int i, k=OrdersHistoryTotal(), r=-1; //OrdersHistoryTotal- опроделяет количество закрытых позиций и удаленных ордеров в истории текущего счета
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
r=OrderType();
}
}
}
}
}
return(r);
}
//_______________---------------+++++++++++++====================__________________===========
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
{PR=Ask;
if(TakeProfit>0) TP=Ask+TakeProfit*Point;
if(StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
{PR=Bid;
if(TakeProfit>0) TP=Bid-TakeProfit*Point;
if(StopLoss>0) SL=Bid+StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE);
if(tic<0) Print("Ошибка открытия ордера: ",GetLastError()); //---- Print() — Выдать сообщение в журнал. GetLastError() — Номер последней ошибки.
return(tic);
}
// строчка вызова NewOrder::: NewOrder(OP_BUY,Lot); //
bool mir ()
{
NewOrder(OP_BUY,Lots);
}