Профи .... нужна помощь ....не могу разобраться

 
Ребята, кто подскажет что нужно вставить в код осцилятора, чтобы при пересечении заданных уровней подавался звуковой сигнал ...Вот подсказали, что нужно вставить PlaySound может кто знает как применить в данном коде..




   
  IndicatorBuffers(2);
  IndicatorShortName("i-BandsWidth ("+BandsPeriod+", "+DoubleToStr(BandsDeviations,1)+", "+Slow+")");
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buffer);
  SetIndexBuffer(1,BWBuffer);

  return;
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void deinit() {

  return;
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
void start() {
  int i,j,limit,cbars;
  double sum,oldval,newres,deviation,upband,dwband;
//---------------------------------------------------  
  cbars=IndicatorCounted();
  if(Bars<=BandsPeriod) return;
  if(cbars<0) return;
  if(cbars>0) limit=Bars-cbars-1;
  else limit=Bars-BandsPeriod-1;

  for(i=0;i<=limit;i++) {
  sum=0.0;
  oldval=iMA(NULL,0,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i);
  for(j=0;j<BandsPeriod;j++) {
  newres=Close[i+j]-oldval;
  sum+=newres*newres;
  }
  deviation=BandsDeviations*MathSqrt(sum/BandsPeriod);
  upband=oldval+deviation;
  dwband=oldval-deviation;
  if(oldval!=0)
  BWBuffer[i]=(upband-dwband)/oldval;
  }
  for(i=0;i<=limit;i++) {
  Buffer[i]=iMAOnArray(BWBuffer,0,Slow,0,0,i);
  }
  return;
}
//+------------------------------------------------------------------+
 

Посмотри http://vinin.ucoz.ru/load/2-1-0-13

Может поможет

 

Вариант Vinin'а простой и надежный, но имеет один недостаток: сигнал повторяется на каждом тике, пока не закроется бар.

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

Проблема звуковой сигнализации достаточно подробно освещена komposter'ом в статье "Звуковые сигналы в индикаторах".

extern bool UseSound=true;
extern string SoundFile="Alert.wav";
bool SoundBuy  = False;
bool SoundSell = False;

//---
start(){
..........
//---все циклы закончены
//---звуковой сигнал начало, b2-стрелка buy, b1-стрелка sell
      if (b2[0] != EMPTY_VALUE && b2[0] != 0 && SoundBuy)
         {
         SoundBuy = False;
            if (UseSound) PlaySound (SoundFile);
         } 
      if (!SoundBuy && (b2[0] == EMPTY_VALUE || b2[0] == 0)) SoundBuy = True;  
  
      if (b1[0] != EMPTY_VALUE && b1[0] != 0 && SoundSell)
         {
         SoundSell = False;
            if (UseSound) PlaySound (SoundFile);
         } 
      if (!SoundSell && (b1[0] == EMPTY_VALUE || b1[0] == 0)) SoundSell = True;    
//---звуковой сигнал конец

return(0);
}
//---

 

прошу помощи.

Сваял первый советник. При компиляции всё окей. Но в тестере выдаёт:

16:26:57 expertMA: loaded successfully
16:27:28 TestGenerator: unmatched data error (low value 1.2843 at 2009.02.04 12:45 is not reached from the least timeframe, low price 1.2854 mismatches)
16:27:28 expertMA inputs: MAPeriod=6; MAShift=0; Lots=1; MagicNumber=123456;

16:35:01 expertMA inputs: MAPeriod=6; MAShift=0; Lots=1; MagicNumber=123456;

Советник создавал начитавшись статей с форума. Идея самая простая, МА пересекает цену-открывается ордер, следуюшее пересечение - закрывается.

То что снизу вверх это бай, сверху вниз это шел это понятно.

Подскажите, где я допустил ошибку.

Привожу текст советника.

//+------------------------------------------------------------------+
//| expertMA.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//---- input parameters
extern int MAPeriod=6;
extern int MAShift=0;
extern int Lots=1;
extern int MagicNumber=123456;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
int deinit()
{
//----

//----
return(0);
}

bool CheckOrders(int Type)
{
bool Result=True;
for(int i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
if(OrderType()==Type)
{
if(Type==OP_BUY)
if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
Result=False;
if(Type==OP_SELL)
if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
Result=False;
}
else Result=False;
return(Result);
}



//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double MA = NormalizeDouble(iMA(NULL, 0, MAPeriod, MAShift, MODE_EMA, PRICE_MEDIAN, 1), Digits);

if(Open[1] > MA && Open[1] < MA)
if(CheckOrders(OP_SELL))
{
if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Buy. Ошибка №", GetLastError());
}

if(Open[1] < MA && Open[1] > MA)
if(CheckOrders(OP_BUY))
{
if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, NULL, MagicNumber))
Print("Не открыт ордер Sell. Ошибка №", GetLastError());
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
в исходнике сам советник
Файлы:
expertma.mq4  3 kb
 
granit77 писал(а) >>

Вариант Vinin'а простой и надежный, но имеет один недостаток: сигнал повторяется на каждом тике, пока не закроется бар.

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

Проблема звуковой сигнализации достаточно подробно освещена komposter'ом в статье "Звуковые сигналы в индикаторах".

Достаточно поставить контроль сигнала не на нулевом, а на первом баре.

 
igrok2008 >>:

Сваял первый советник. При компиляции всё окей. Но в тестере выдаёт:

16:27:28 TestGenerator: unmatched data error (low value 1.2843 at 2009.02.04 12:45 is not reached from the least timeframe, low price 1.2854
На сайте кроме живых людей есть еще поиск (unmatched data error), там можно найти множество вариантов ответа на свой вопрос.
 

Блин, а я тут вспомнил что когда-то натыкался на музыкальный индикатор, играющий "мелодию" рынка ну или что-то типа того... Обыскался уже... Никто не встречал? Захотелось на слух поторговать)

 
 
granit77 писал(а) >>
Держи!

Оно) THNX

 

granit77 писал и посоветовал

На сайте кроме живых людей есть еще поиск (unmatched data error), там можно найти множество вариантов ответа на свой вопрос.

У меня вопрос, в тестере другие советники показывают всё нормально, все показания есть, в журнале и в отчёте всё показывают, а этот советник показывает одни нули. В поиске, прочитал, чтоб смотрели историю, но другие то торгуют. Может я что то напутал в коде.... Заранее благодарен.