Пипсовка Советником, МТС |
Здравствуйте, гость ( Вход | Регистрация )
Пипсовка Советником, МТС |
SERGE |
1.12.2006, 11:07
Сообщение
#1
|
Группа: Активный участник Сообщений: 27 Регистрация: 10.6.2006 Пользователь №: 657 Спасибо сказали: 0 раз(а) |
Интересно , кто как относится к пипсовке? Желательно поделиться опытом.
Для закваски - код экспериментального пипсовщика. Цитата //+------------------------------------------------------------------+ //| FTLM-flat.mq4 | //| | //| | //+------------------------------------------------------------------+ // Оптимизировать для евро -доллар 5 или 15 минут за последний месяц extern double TakeProfit =12; extern double tTakeProfit =6; // тейкпрофит меньше 10 extern double Lots =0.1; extern double StopLoss =30; extern double sStopLoss =25; // стоплосс меньше 10 extern double limh =0.0005; extern double ftlimh =0.0005; extern double stdper =18; //+------------------------------------------------------------------+ int start() { double std; double ftlm,ftlmz,ftlmzz; double ftliml=0-ftlimh; int cnt, ticket, total; //+------------------------------------------------------------------+ if(Bars<100) { Print("bars less than 100"); return(0); } //+------------------------------------------------------------------+ if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } //+------------------------------------------------------------------+ ftlm=iCustom(NULL,0,"FTLM-STLM",1,0); // индикатор здесь ftlmz=iCustom(NULL,0,"FTLM-STLM",1,1); //http://www.lightpatch.com/forex/_MT4_Indicators/ ftlmzz=iCustom(NULL,0,"FTLM-STLM",1,2); std=iStdDev(NULL,0,stdper,0,MODE_EMA,0,0); //+------------------------------------------------------------------+ total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } //+------------------------------------------------------------------+ // check for long position (BUY) possibility if (ftlm >ftlmz&& ftlmz<ftlmzz && std<limh && ftlm < ftliml ) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,Bid-StopLoss*Point,Ask+TakeProfit*Point,"ftlm ",12152,0,Red);Sleep(10000); 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); } //+------------------------------------------------------------------+ // check for short position (SELL) possibility if (ftlm<ftlmz&& ftlmzz<ftlmz && std<limh && ftlm > ftlimh) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,Ask+StopLoss*Point,Bid-TakeProfit*Point,"ftlm ",12152,0,Blue);Sleep(10000); 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); } //+-------------------------------close position-----------------------------------+ for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { if (Bid<=OrderOpenPrice()-sStopLoss*Point || Bid>=OrderOpenPrice()+tTakeProfit*Point) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position } return(0); // exit } else { if (Ask>=OrderOpenPrice()+sStopLoss*Point || Ask<=OrderOpenPrice()-tTakeProfit*Point ) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position return(0); // exit } } } } return(0); } //+----------------------------------------------------------------- |
leonid553 |
6.3.2007, 10:04
Сообщение
#2
|
Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) |
Ув. Serge!
Прошу прощения! Но в силу своих скромных познаний при разборе кода вроде бы нашел ошибку : При проверке условий на вход в BUY, ПЕРВОЕ УСЛОВИЕ выглядит так: // check for long position (BUY) possibility if (ftlm >ftlmz&& ftlmz<ftlmzz && std<stdlim && cci < cciliml) { Однако. Мне представилось, что во втором неравенстве должно быть: " ftlmz>ftlmzz " Тем более, если предположить, что условие нА вход в SELL ПОКАЗАНО ПРАВИЛЬНО: // check for short position (SELL) possibility if (ftlm<ftlmz&& ftlmzz<ftlmz && std<stdlim && cci > ccilimh ) |
Текстовая версия | Сейчас: 29.5.2024, 4:09 |