[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 121

 
kilnart:

хочу написать советник по патерну Пинцет.

условием открытия выбрал

к моему сожалению условие оказалось не верным, тк, 'sl' устанавливается на цену 100.00000, а 'tp' вообще показывает ошибку.

решил добавить условие, учитывать 1 тик.

результат тотже. как правильно решить мою задачу?

У вас переменная Step=100 ? Если так, то посмотрите что получится дальше по коду.

 
      Step=MarketInfo(Symb,MODE_STOPLEVEL);
 
kilnart:

Посмотрите, точки с запятой (;),

  Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)]    
  High2=High[iHighest(NULL,0,MODE_HIGH,10,2)] 
 
да это все на месте. просто не замарачивался когда на форум писал
 
kilnart:
да это все на месте. просто не замарачивался когда на форум писал
Вот ваш код, все работает
//+------------------------------------------------------------------+
//|                                                     Проверка.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  bool bull_pincet=false;
  bool bear_pincet=false;
  double sl,tp;
  int Total=OrdersTotal(); 
  double Step=MarketInfo(Symbol(),MODE_STOPLEVEL);
//----
 double Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)];    
 double High2=High[iHighest(NULL,0,MODE_HIGH,10,2)];     

if(Low[1]==Low2 ) bull_pincet=true;
if(High[1]==High2) bear_pincet=true;
   while(true)
      {
       
       if(Total==0 && bull_pincet==true)
        {
         sl=Low[1];
         if(sl<Step)sl=Step;
         tp=Ask+((Ask-sl)*2);
                  
         OrderSend(Symbol(),OP_BUY,0.01,Ask,3,sl,tp);
         return;
        }

        if(Total==0 && bear_pincet==true)
         {
          sl=High[1];
          if(sl<Step)sl=Step;
          tp=Bid-((sl-Bid)*2);
          OrderSend(Symbol(),OP_SELL,0.01,Bid,3,sl,tp);
          return;
         }
       break;
      }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
не работает код. скопировал, вставил, исправил некоторые ошибки, результат такой же как был у меня. стоп лосс стоит на уровне 100.00000
 
скопировал, вставил, исправил некоторые ошибки, результат -- работает код в тестере на 4-х знаке:
int init() {return(0);}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){ return(0); }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  bool bull_pincet=false;
  bool bear_pincet=false;
  double sl,tp;
  int Total=OrdersTotal(); 
  double Step=MarketInfo(Symbol(),MODE_STOPLEVEL);
//----
double Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)];    
double High2=High[iHighest(NULL,0,MODE_HIGH,10,2)];     

if(Low[1]==Low2 ) bull_pincet=true;
if(High[1]==High2) bear_pincet=true;
   while(true)
      {
       if(Total==0 && bull_pincet==true)
        {
         sl=Low[1];
         if(sl>Bid-Step*Point)sl=Bid-Step*Point;
        tp=Bid+Step*Point*2;
         
         //if(sl<Step)sl=Step;
        // tp=Ask+((Ask-sl)*2);
                  
         OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp);
         return;
        }

        if(Total==0 && bear_pincet==true)
         {
          sl=High[1];
          if(sl<Ask+Step*Point)sl=Ask+Step*Point;
         tp=Ask-Step*Point*2;
        //  if(sl<Step)sl=Step;
         // tp=Bid-((sl-Bid)*2);
          OrderSend(Symbol(),OP_SELL,0.1,Bid,3,sl,tp);
          return;
         }
       break;
      }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Fillelin:
Вот могу предложить аналогичный СКРИПТ.

Описание в коде.

Спасибо! Если скрипт, то может и подойдет - скрипт ведь может работать как советник, если его в experts закинуть.

Насчет составленного советника - так и не смог его откомпилировать, в конце концов столкнулся с ошибками:

'GetNameOP' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 31)
'ErrorDescription' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 49)
Даже после исправлений - не хватает 2-х пользовательских функций.
 
Roll:
скопировал, вставил, исправил некоторые ошибки, результат -- работает код в тестере на 4-х знаке:

Хорошо, молодец . Давай-ка глянем, если Step=0

  if(sl>Bid-Step*Point)sl=Bid-Step*Point;
  tp=Bid+Step*Point*2;

чему будет равен sl и tp

А челу, который поднял этот вопрос надо установить ордер sl=0, tp=0 а потом модифицировать.

Наверное так.

 
Lians:

Спасибо! Если скрипт, то может и подойдет - скрипт ведь может работать как советник, если его в experts закинуть.

Насчет составленного советника - так и не смог его откомпилировать, в конце концов столкнулся с ошибками:

'GetNameOP' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 31)
'ErrorDescription' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 49)
Даже после исправлений - не хватает 2-х пользовательских функций.

Функции у Игоря Ким

https://www.mql5.com/ru/forum/107476/page6#69097

А 'ErrorDescription', вставьте в начале кода

#include <stdlib.mqh>             // Стандартная библиотека 
Причина обращения: