Помогите с кодом ...

 
//+------------------------------------------------------------------+
//|                                                         trdr.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Swan"
#property link      "http://ruforum.forexpeoples.com"
#include <stderror.mqh>
#include <stdlib.mqh>

extern int RISK=4;
extern int AllBars=250;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int TrailingStop=0;
extern double Lots=0.1;
extern int Slippage=3;
extern int MagicNumber = 24212;
datetime LastTime = 0;
double SL,TP;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
int Signal=0;
if(iCustom(NULL,0,"ASCtrend",RISK,AllBars,0,1)!=EMPTY_VALUE) Signal=1;
if(iCustom(NULL,0,"ASCtrend",RISK,AllBars,1,1)!=EMPTY_VALUE) Signal=-1;
int Total=0;

for(int cnt=0;cnt<OrdersTotal();cnt++)
   {
   OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
      {
      Total++;
      if(OrderType()==OP_BUY)
         {
         if(Signal<0)
            {
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage);
            return(0);
            }
         if(TrailingStop>0 && Bid-OrderOpenPrice()>(TrailingStop+0.1)*Point 
         && Bid-OrderStopLoss()>(TrailingStop+0.1)*Point)
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0);
            return(0);
            }
         }
      if(OrderType()==OP_SELL)
         {
         if(Signal>0)
            {
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage);
            return(0);
            }
         if(TrailingStop>0 && OrderOpenPrice()-Ask>(TrailingStop+0.1)*Point
         && (OrderStopLoss()-Ask>(TrailingStop+0.1)*Point || OrderStopLoss()==0))
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0);
            return(0);
            }
         }
      }
   }
if(Total<1)
   {
   if(Signal>0)
      {
      SL=0;TP=0;
      if(StopLoss>0)   SL=Ask-Point*StopLoss;
      if(TakeProfit>0) TP=Ask+Point*TakeProfit;
      if (!NumberOfBarOpenLastPos(NULL, 0,OP_BUY, MagicNumber)  ==0) {//запрет неск. сделок на 1 баре
      OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,WindowExpertName(),MagicNumber,0,Blue);
      return(0); 
      }
      }
   if(Signal<0)
      {
      SL=0;TP=0;
      if(StopLoss>0)   SL=Bid+Point*StopLoss;
      if(TakeProfit>0) TP=Bid-Point*TakeProfit;
      if (!NumberOfBarOpenLastPos(NULL, 0,OP_SELL, MagicNumber)  ==0) {//запрет неск. сделок на 1 баре
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,WindowExpertName(),MagicNumber,0,Red);
      return(0); 
      }
   }
   }
   return(0);
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++)                                    {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()==sy)                             {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op)                   {
            if (mn<0 || OrderMagicNumber()==mn)          {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }} } } } }
  return(iBarShift(sy, tf, t, True));
}
Нашел простенького эксперта работающего по индикатору асктренд, при прогоне в тестере заметил что если сделка закрылась на одной свече ордер открывается снова а надо чтобы работал только один раз на одном баре, вписал функцию И.Кима - не работает, просидел весь день непонимаю в чем причина?
 
FxPro2 >>:
Нашел простенького эксперта работающего по индикатору асктренд, при прогоне в тестере заметил что если сделка закрылась на одной свече ордер открывается снова а надо чтобы работал только один раз на одном баре, вписал функцию И.Кима - не работает, просидел весь день непонимаю в чем причина?

poprobuite bot 4toto v atom rode...

Файлы:
sovet.mq4  3 kb
 
lascu.roman >>:

poprobuite bot 4toto v atom rode...

спасибо, опрубую, дам знать :)

 
не работает опять как надо :(( сделки должны идти переворотом, бай-селл-бай-селл, а идут то нормально а то селл-селл-селл-бай-бай ...
 
FxPro2 >>:
не работает опять как надо :(( сделки должны идти переворотом, бай-селл-бай-селл, а идут то нормально а то селл-селл-селл-бай-бай ...

vi hotite shtob on otkril odnu zdelku za odin bar (ia tak ponimaiu...) navernika on ne rabotaet tak kak vi hotite potomu shto tam esti i stop loss i take profit. esli ne modifitzirovati orderi on doljen otkriti perevorotom buy-sell-buy...

 
//+------------------------------------------------------------------+
//|                                                     ASCtrend.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Magenta

extern int RISK=4;
extern int AllBars=250;
int up=0,dn=0;
double val1buffer[];
double val2buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(2);

SetIndexBuffer(0, val1buffer);
SetIndexStyle(0,DRAW_ARROW,EMPTY);
SetIndexArrow(0,108);

SetIndexBuffer(1, val2buffer);
SetIndexStyle(1,DRAW_ARROW,EMPTY);
SetIndexArrow(1,108);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{ 
double value2;
double value3;
double value10=10;
double value11;
double x1=70;
double x2=30;
int TrueCount;
int counter;
int MRO1;
int MRO2;
int i1;
double Range;
double AvgRange;
double val1;
double val2;
double Table_value2[500][2];
value10=3+RISK*2;
x1=67+RISK;
x2=33-RISK;
value11=value10;
//---------------------------- 
int i;
int shift = AllBars;
if (shift > Bars) shift = Bars;

for(i=shift; i>0; i--)
   {
   counter=i;
   Range=0;
   AvgRange=0;
   for(counter=i;counter<=i+9;counter++)
      {
      AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
   Range=AvgRange/10;
   counter=i;
   TrueCount=0;
   while(counter<i+9 && TrueCount<1)
      {
      if(MathAbs(Open[counter]-Close[counter+1])>=Range*2.0 ) TrueCount++;
      counter++;
      }
   if(TrueCount>=1) MRO1=counter; 
   else MRO1=-1;
   counter=i;
   TrueCount=0;
   while(counter<i+6 && TrueCount<1)
      {
      if(MathAbs(Close[counter+3]-Close[counter])>=Range*4.6) {TrueCount++;}
      counter++;
      }
   if(TrueCount>=1) MRO2=counter; 
   else MRO2=-1;
   if (MRO1>-1) value11=3; 
   else value11=value10;
   if (MRO2>-1) value11=4; 
   else value11=value10;
   value2=100-MathAbs(iWPR(NULL,0,value11,i));
   Table_value2[i][0]=i;
   Table_value2[i][1]=value2;
   val1=0;
   val2=0;
   value3=0;
//------------------- val1 
   if(value2<x2 ) // x2 = 30
      {
      i1=1;
      while(Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1) {i1++;}
      if (Table_value2[i+i1][1]>x1)
         {
         value3=High[i]+Range*0.5;
         val1=value3;
         }
      }
//------------------- val2 
   if ( value2>x1) // x1 = 70 
      { 
      i1=1;
      while (Table_value2[i+i1][1]>=x2 && Table_value2[i+i1][1]<=x1) {i1++;}
      if (Table_value2[i+i1][1]< x2)
         {
         value3=Low[i]-Range*0.5;
         val2=value3;
         } 
      }
//-------------------
   if (val2!=0 && up==0 )
      { 
      val1buffer[i]= val2-1*Point;
      val2buffer[i]=EMPTY_VALUE;
      up=1;
      dn=0;
      } 
   if (val1 !=0 && dn==0)
      {
      val1buffer[i]=EMPTY_VALUE;
      val2buffer[i]= val1+1*Point;
      dn=1;
      up=0;
      }
   }
  return(0);
}
вот код индикатора, эксперт должен работать по точкам, красная продажа, синяя покупка и сделки должны идти соответсвенно бай-селл-бай-селл, а сейчас например появляется синяя точка эксперт покупает, сделка закрывается например по стопу на той же свече что и открылась, и на этой же свече происходит повторная покупка а так быть недолжно, одна точка одна сделка
 
FxPro2 >>:
вот код индикатора, эксперт должен работать по точкам, красная продажа, синяя покупка и сделки должны идти соответсвенно бай-селл-бай-селл, а сейчас например появляется синяя точка эксперт покупает, сделка закрывается например по стопу на той же свече что и открылась, и на этой же свече происходит повторная покупка а так быть недолжно, одна точка одна сделка

вот новыи вариант.он дествително открывает только один ордер за бар. там было ошибка bars_p=bars_p в конце.

Файлы:
asktrend.mq4  3 kb
 
да все работает! СПАСИБО