[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 492

 

Ajude-me a acrescentar, Horizintal shift
e vertical shift
Se também funcionar cloud

//+------------------------------------------------------------------+
//|                                                Price Channel.mq4 |
//+------------------------------------------------------------------+



#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 DodgerBlue
//---- input parameters
extern int ChannelPeriod = 14;
//---- buffers
double UpBuffer[];
double DnBuffer[];
double MdBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(0, UpBuffer);
   SetIndexBuffer(1, DnBuffer);
   SetIndexBuffer(2, MdBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Price Channel("+ChannelPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0, "UpCh");
   SetIndexLabel(1, "DownCh");
   SetIndexLabel(2, "MidCh");
//----
   SetIndexDrawBegin(0, ChannelPeriod);
   SetIndexDrawBegin(1, ChannelPeriod);
   SetIndexDrawBegin(2, ChannelPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Price Channel                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i, counted_bars = IndicatorCounted();
   int    k;
   double high, low, price;
//----
   if(Bars <= ChannelPeriod) 
       return(0);
//---- initial zero
   if(counted_bars < 1)
      for(i = 1;i <= ChannelPeriod; i++) 
          UpBuffer[Bars-i] = 0.0;
//----
   i = Bars - ChannelPeriod - 1;
   if(counted_bars >= ChannelPeriod) 
       i = Bars - counted_bars - 1;
   while(i >= 0)
     {
       high = High[i]; 
       low = Low[i]; 
       k = i - 1 + ChannelPeriod;
       while(k >= i)
         {
           price = High[k];
           if(high < price) 
               high = price;
           price = Low[k];
           if(low > price)  
               low = price;
           k--;
         } 
       UpBuffer[i] = high;
       DnBuffer[i] = low;
       MdBuffer[i] = (high + low) / 2;
       i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
 
splxgf >>:

Можно сделать горячий старт сразу в

init(){

while (true) {

//Вечный кайф

}

Obrigado splxgf. Eu tentei, mas ... Bem, eu acho que terei que deixar este empreendimento até tempos melhores. Ou talvez alguém mostre interesse nisso, em minha opinião, um refinamento útil de muitos especialistas.

 
hedger писал(а) >>

Obrigado splxgf. Eu tentei, mas ... Bem, eu acho que terei que deixar este empreendimento até tempos melhores. E talvez alguém mostre interesse nisso, na minha opinião, um refinamento útil de muitos especialistas.


ver como isso deve ser feito
int start()
{
enquanto (verdadeiro)
{
Dormir(5000); // 5 segundos de atraso até a próxima iteração
RefreshRates(); // Atualização de dados
// restante do código. Condições para abrir, fechar, etc.
}
}
 
Djonon >>:

ПОмогите добавить, Сдвиг по горозинтали
и вертикали
Если ещё и работать бутет..........клювоо

extern int Сдвиг_по_горозинтали = 14; //КОЛ-ВО БАРОВ
extern int и_вертикали = 14; //КОЛ-ВО ПУНКТОВ
Arquivos anexados:
 
hedger >>:

Для закрытия ордеров я пользуюсь советником JimsCloseOrders, который может закрывать любые ордера по выбору – или профитные, или убыточные, или все подряд, правда пришлось его немного подкорректировать - вот в этих двух строках кода

extern bool CloseOpenOrders = true;

extern bool CloseOrdersWithPlusProfit = false;

false и true надо поменять местами, иначе, если такую настройку выполнять при установке на график, почему-то начинает закрывать все ордера (видимо из-за последовательности выполнения команд программой, но не уверен, не спец).

У меня вопрос к профи.

Требуется, как можно быстрее запустить, например, советника, о котором шла речь выше, но все советники и скрипты начинают действовать с момента поступления первого тика на график. Если же выбранная для установки советника валютная пара оказалась не очень "активной" в этот момент, то потери могут быть значительными.

Существует ли возможность создания "общего" графика для всех валют, или воспользоваться поступающим тикам любой другой пары? Тики же в терминал поступают почти непрерывно. Где их можно перехватить?

É simples em

int init()
  {
    трали вали..
    start();
  }
Ao inicializar, execute imediatamente a função
start();
Veja também emulação de carrapatos, mas não é isso ...

start() é a função principal. Em Expert Advisors é chamado após o próximo tick. Para indicadores personalizados, ele é chamado durante o recálculo após anexar o indicador ao gráfico, na abertura do terminal do cliente (se o indicador estiver anexado ao gráfico), bem como após a chegada do próximo tick. Nos roteiros é executado imediatamente após anexado ao gráfico e inicializado. Se não houver função start() no módulo, este módulo (Expert Advisor, script ou indicador personalizado) não poderá ser lançado.
 
int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
ponto duplo =MarketInfo("GBPUSD",MODE_POINT);
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point);
Alerta("GetLastError()");
retornar;
}

Tirei este roteiro do tutorial; queria ver como funcionava; compilei e salvei. Quando eu o dirijo, ele falha, por quê?
Não me dá nenhum erro, simplesmente não funciona...
 
Cavalheiros. Boa noite a todos. Não estou tendo absolutamente nenhuma sorte em dominar o idioma. (

Eu tento reescrever algo a partir de montes de Expert Advisors, mas quando eu preciso escrever algo concreto, eu me sinto burro...(( E agora...
Gostaria de fazer a seguinte linha no Expert Advisor:
Tenho um algoritmo de abertura, tenho lucro, e quero que feche após um certo tempo, não importa qual seja o resultado,
- esta é a forma de adicioná-lo agora
Quero poder definir este tempo em Expert Advisor. Por exemplo, eu quero que o negócio se feche sozinho após duas, três ou quatro horas. Dependendo do tempo de divulgação da notícia, por exemplo. Acho que você entende o que quero dizer.
Se alguém souber, talvez tais perguntas já tenham sido feitas no fórum, pelo menos me dê o link. Tentei ler o livro didático, um só nervosismo, escrito para programadores avançados, bem, certamente não para as senhoras.
E se alguém não for difícil e parecer uma bagatela, então escreva as linhas, eu pelo menos as colo, então talvez algo funcione.
Uma grande mulher por favor.......
 
Magiyanka >>:
Господа. Всем добрый вечер. У меня прям совсем ничего не получается в освоении языка. (((((((

extern int Час=2; //В начало кода
extern int Мин=6;
extern int Slippage  =  25;
extern int STUPID= 12830454;
//В конец кода отдельной функцией
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
void  OrdersCloseByTime(int MagicNumber)
{
   for(int i = 0; i < OrdersTotal(); i++)
   {
      // already closed
      if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES ) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber() != MagicNumber) continue;
      if(Time[0]-OrderOpenTime( )>=Час*60*60+Мин*60){
        if(OrderType() == OP_SELL)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
        if(OrderType() == OP_BUY)
        OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid,Digits), Slippage, Blue);
        }
   }
   
}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
int start()
{
 OrdersCloseByTime(STUPID);//STUPID это мажик номер Вашего советчика
 трали вали ...
Fechando posições de tempo, onde você colocaria isso para que não se perca?!
 
Lim1 >>:

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
OrderSend("GBPUSD",OP_BUY,0.01,ask,2,bid-15*Point,bid+15*Point);
Alert (GetLastError());
return;
}

Взял этот скрипт из учебника, хотел посмотреть как он работает - скомпилировал, сохранил. Запускаю - безрезультатно, почему?
Ошибок не выдает, просто не работает...

Tente desta forma.

int start()
{
double bid =MarketInfo("GBPUSD",MODE_BID);
double ask =MarketInfo("GBPUSD",MODE_ASK);
double point =MarketInfo("GBPUSD",MODE_POINT);
int tickkkkkkk=OrderSend("GBPUSD",OP_BUY,1,ask,2,bid-15*Point,bid+15*Point);
if(tickkkkkkk==-1){
 Alert ("Ошибка № "+GetLastError());
 if(GetLastError()==131)
 Alert ("Неправильный объем");
 if(GetLastError()==6)
 Alert ("Нет связи с торговым сервером");
 }
 else Alert ("Все ОК!!!");
return;
}
 
não funciona, não fecha na hora certa e é isso