Помогите подремонтировать код.

 

Начал создавать советник на статистике-открывает поз.против определенного бара в определенное время по определенной паре.Попробовал проверить этот полуфабрикат на тестере МТ4-не открывает ни одной сделки.Советник должен работать вместе с индикатором PeriodOfTime.Позтому привожу код как советника так и индикатора.С теми кто поможет устранить неполадки-поделюсь конечным результатом.Я сам не программер,просто стратегия есть .


//+------------------------------------------------------------------+
//| PeriodOfTime.mq4 |
//| Copyright c 2006, Gordago Software Ltd. |
//| http://www.gordago.com |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2006, Gordago Software Ltd."
#property link "http://www.gordago.com"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta
//---- input parameters
extern int prmHour=12;
extern int prmMinute=15;
extern int prmPeriod=3;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |


//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,251);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int pos=Bars-counted_bars;
while(pos>=0){

int iYear = TimeYear(Time[pos]);
int iMonth = TimeMonth(Time[pos]);
int iDay = TimeDay(Time[pos]);
int iHour = TimeHour(prmHour);
int iMinute = TimeMinute(prmMinute);
string strdtm = iYear + "." + iMonth + "." + iDay + " " + prmHour + ":" + prmMinute;
datetime dtm = StrToTime(strdtm);
datetime dtmto = dtm + prmPeriod * 60 - 1;

if (Time[pos] >= dtm && Time[pos] <= dtmto)
ExtMapBuffer1[pos] = High[pos]+Point*2;
else
ExtMapBuffer1[pos] = 0.0;
pos--;
}
return(0);
}
//+------------------------------------------------------------------+

ьььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььь

ььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььььь

А теперь непослушный эксперт:ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ

ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

тттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттттт

//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp. |
//| http://www.gordago.com/ |
//| version 2.0 |
//+------------------------------------------------------------------+

#property copyright "Copyright 2005, Gordago Software Corp."
#property link "http://www.gordago.com"

#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 17992

extern string sNameExpert = "Generate from Gordago";
extern int nAccount =0;
extern double dBuyStopLossPoint = 20;
extern double dSellStopLossPoint = 0;
extern double dBuyTakeProfitPoint = 50;
extern double dSellTakeProfitPoint = 0;
extern double dBuyTrailingStopPoint = 0;
extern double dSellTrailingStopPoint = 0;
extern double dLots = 0.01;
extern int nSlippage = 5;
extern bool lFlagUseHourTrade = False;
extern int nFromHourTrade = 0;
extern int nToHourTrade = 23;
extern bool lFlagUseSound = True;
extern string sSoundFileName = "alert.wav";
extern color colorOpenBuy = Blue;
extern color colorCloseBuy = Aqua;
extern color colorOpenSell = Red;
extern color colorCloseSell = Aqua;


void deinit() {
Comment("");
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Time for trade has not come else!");
return(0);
}
}

if(Bars < 100){
Print("bars less than 100");
return(0);
}

if (nAccount > 0 && nAccount != AccountNumber()){
Comment("Trade on account :"+AccountNumber()+" FORBIDDEN!");
return(0);
}

if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss less than " + MIN_STOPLOSS_POINT);
return(0);
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit less than " + MIN_TAKEPROFIT_POINT);
return(0);
}

double diCustom0=iCustom(NULL, 15, "PeriodOfTime", 8, 30, 2, 0, 0);
double diOpen1=iOpen(NULL,15,1);
double diClose2=iClose(NULL,15,1);


if(AccountFreeMargin() < (1000*dLots)){
Print("We have no money. Free Margin = " + AccountFreeMargin());
return(0);
}

bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false;

lFlagBuyOpen = (diCustom0>0 && diOpen1-diClose2>=0.0003);
lFlagSellOpen = False;
lFlagBuyClose = False;
lFlagSellClose = False;

if (!ExistPositions()){

if (lFlagBuyOpen){
OpenBuy();
return(0);
}

if (lFlagSellOpen){
OpenSell();
return(0);
}
}
if (ExistPositions()){
if(OrderType()==OP_BUY){
if (lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy);
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName);
return(0);
}
}
if(OrderType()==OP_SELL){
if (lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell);
if (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName);
return(0);
}
}
}

if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){

for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false;

if (OrderSymbol()==Symbol() && lMagic) {
if (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
if (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
if (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
ModifyStopLoss(Bid-dBuyTrailingStopPoint*Point);
}
}
if (OrderType()==OP_SELL) {
if (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
if (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifyStopLoss(Ask+dSellTrailingStopPoint*Point);
}
}
}
}
}
}
return (0);
}

bool ExistPositions() {
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true;

if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false;

if (OrderSymbol()==Symbol() && lMagic) {
return(True);
}
}
}
return(false);
}

void ModifyStopLoss(double ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE);
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName);
}

void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;

if (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;

if (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point;

int numorder = OrderSend(Symbol(), OP_BUY, dLots, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;

if (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point;

if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;

int numorder = OrderSend(Symbol(),OP_SELL, dLots, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}

ТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТТ

Скомпилировано и то и другое.

сссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссссс

ммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммммм

Спасибо тем кто откликнется.

 

и к сообщению можно прикреплять файлы. Если так сделаете, то вам скорее помогут

 
И сделать покороче всякие ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ

ммммммммммммммммммммммммммммммм

Не у всех мониторы в четверть комнаты!!!

 
Swetten писал (а) >>
И сделать покороче всякие ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ

ммммммммммммммммммммммммммммммм

Не у всех мониторы в четверть комнаты!!!

эх купил себе громадный монитор! класс почти как телеФизор

19 дюймовый как щеночек рядом стоит

 
А я купил чуть меньше, 22' wide, в надежде работать без очков (близорукий я..) и облажался. Теперь без очков все равно носом в экран, а в очках надо на метр отходить...
 

2 granit77 не пытался заниматься по системе Норбекова ? Очень помогает,живой пример - брат моей жены, у него +8 и астигматизм врожденный, полтора года занятий и он снял очки!

книга называеться :"Опыт дурака, или ключ к прозрению"

 
Спасибо, почитаю, правда, беда подобных тренировочных систем в том, что после курса очень быстро все возвращается на исходную позицию.
 
прошло 2 года все нормально. сам бы не поверил, если бы не видел.
 
BROM писал (а) >>

Начал создавать советник на статистике-открывает поз.против определенного бара в определенное время по определенной паре.Попробовал проверить этот полуфабрикат на тестере МТ4-не открывает ни одной сделки.Советник должен работать вместе с индикатором PeriodOfTime.Позтому привожу код как советника так и индикатора.С теми кто поможет устранить неполадки-поделюсь конечным результатом.Я сам не программер,просто стратегия есть .

А ты попробуй поставить лот 1 или 0.1

У меня все работает, но это на М15. На М30 тоже работает. На часовиках уже нет.

Открываются только BUY позиции.

   lFlagBuyOpen = (diCustom0>0 && diOpen1-diClose2>=0.0003);
   lFlagSellOpen = False;
   lFlagBuyClose = False;
   lFlagSellClose = False;
 
Vinin писал (а) >>

А ты попробуй поставить лот 1 или 0.1

У меня все работает, но это на М15. На М30 тоже работает. На часовиках уже нет.

Открываются только BUY позиции.

Спасибо всем кто откликнулся,особенно Винину и Привалу.Их замечания и предложения учту.Тема не закрыта.это только начало.Винину-сделки вверх-все правильно,т.к.это полкуфабрикат.Цель-сделать вверх и вниз отложенными ордерами.Мое предложение в силе.

 

И где же тот, кто вызвал тему из небытия?

Больше года уже прошло.

Индикатор надо было бы выкинуть. Саму стратегию туда же.