Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 515

 
artmedia70:
Com tais perguntas você deve ir para a 610ª linha de construção - os desenvolvedores estão lá


Obrigada, foi embora.
 
Zolotai:

Sim, mas, você sabe. Eu teria que escavar o código de outra pessoa. O que eu não entendo, e isso leva muito tempo Para descobri-lo.

Comece com Tutorial, depois Documentação, etc. Não há outra maneira! E você poderá entender o código dos outros e aprender muito com eles! As dicas não ensinam, elas corrompem!
 

Pergunta sobre a visualização.

Eu crio uma ordem pendente com um comando como este

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue);

No testador, podemos ver seu caminho todo como setas: ordem pendente ------> comprar --------------> obter lucro na venda

Entretanto, apenas a seta azul aparece ao fazer um pedido e só podemos adivinhar sobre a compra e obter lucro nos troncos. Há alguma maneira de ver as setas no gráfico real da mesma forma que no testador?

 
Denis111:

Pergunta sobre a visualização.

Eu crio uma ordem pendente através de um comando do seguinte tipo

OrderSend(Symbol(), OP_BUYLIMIT, lot, price, 3, 0, take_profit, 999, 999, 0, Blue);

No testador, as setas mostram seu caminho completo: ordem pendente ------> comprar --------------> vender em Take Profit

Na vida real, somente a seta azul aparece quando um pedido é feito e só podemos adivinhar sobre a compra e obter lucro nos troncos. Há alguma maneira de ver as setas no gráfico real da mesma forma que no Testador de Estratégia?


Para fazer isso, abra sem TP, e então especifique uma cor ao modificar também, e você terá um triângulo de fechamento com uma linha pontilhada da própria abertura!
 

Olá, eu escrevi um roteiro simples para abrir uma ordem de compra pendente. O script funciona com sucesso em uma conta demo, mas em uma conta real ele gera erro: 133, o que significa que não é permitido negociar. Você poderia me dizer qual é o problema? Qual pode ser a razão deste erro?


encomenda externa int tamanho = 50;
encomenda externa int SL = 20;
encomenda externa int TP = 20;

int start()
{
double correctPoint = 0.0001;
double priceOpen = iOpen( Symbol(), PERIOD_M5, 0 ); //escreva o preço aberto da barra de cinco minutos atual na variável priceOpen

double priceBuy = priceOpen + (double)orderSize * correctPoint; //o preço ao qual o pedido pendente é colocado
double priceTP = priceBuy + (double)TP * correctPoint;
double priceSL = priceBuy - (double)SL * correctPoint;

while( !IsTradeAllowed() )
Sleep( 100 );
int codeError = OrderSend( Symbol(), OP_BUYSTOP, 1.5, priceBuy, 100, priceSL, priceTP );
if( codeError == -1 )
Alert ("BuyStop error: ", GetLastError() );

return(0);
}//±
 
E aqui acontece que há aqueles que lotam metade do fórum com uma pergunta.
 

Quero fazer um simples script de coruja..... ao fazer o 1º pedido SL e TP dá erro 130, e onde inserir código com Tralingstop???

//+------------------------------------------------------------------+
//| установка мышкой отложенных ордеров                              |
//|                               Copyright © 2012, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Хлыстов Владимир"
#property link      "cmillion@narod.ru"
#property show_inputs

//--------------------------------------------------------------------
extern int     Stoploss          = 0,     //стоплосс ордеров
               Takeprofit        = 0;     //тейкпрофит ордеров
extern double  Lot               = 0.1;   //лот
extern int     Magic             = 0;     //уникальный номер ордеров этого советника
extern bool    comment           = true;  //выводить информацию на экран
//--------------------------------------------------------------------
int start()
{
   int n;
   double SL,TP;
   double Price = NormalizeDouble(WindowPriceOnDropped(),Digits);
   string txt=StringConcatenate("Скрипт выставления рыночного ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   while(true)
   {
      RefreshRates();
      if(Price>Ask) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Ask - Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен BUY ",DoubleToStr(Ask,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления BUY ");
      }
      if(Price<Bid) 
      {
         if (Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); else TP=0;
         if (Stoploss!=0)   SL = NormalizeDouble(Bid + Stoploss   * Point,Digits); else SL=0;
         if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,SL,TP,"StopOrders",Magic,0,CLR_NONE)!=-1)
              {txt = StringConcatenate(txt,"\nВыставлен SELL ",DoubleToStr(Bid,Digits));break;}
         else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," выставления SELL ");
      }
      if (comment) Comment("Попытка ",n," ",txt);
      n++;
      if (n>10) break;
   }
   if (comment) Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   return(0);
}
//--------------------------------------------------------------------
 
MyTHblu:

quero fazer um script simples de coruja..... ao fazer o 1º pedido SL e TP dá erro 130, e onde inserir código com Tralingstop???


130 - as paradas estão erradas. Leia cuidadosamente os termos de sua corretora novamente e depois releia-os regularmente para não se esquecer. Por que vocês gostam tanto da Alpari, é como mel...


O código da rede de arrasto pode ser copiado para o início, ou você pode usar uma função separada, novamente, desde o início.

 
evillive:

130 - as paradas estão erradas. Leia as condições comerciais de seu corretor mais uma vez e depois releia-as regularmente para não se esquecer. Por que todos vocês gostam tanto da Alpari, é como mel...


O código da rede de arrasto pode ser copiado para o início, ou você pode usar uma função separada, novamente, desde o início.


Como ele tirou esta coruja da CodeBase, ele também pode escolher outra com rede de arrasto. E nos Alpes, é preciso abrir sem SL e TP e modificar imediatamente o pedido, colocando-as. Por que eles não se preocupam em ler os termos e condições do corretor, as regras do fórum, a ajuda do MT4 e as informações escritas e discutidas cem vezes aqui no site, use a busca aqui e no Google? Antes de fazer perguntas básicas?
 

como conectar códigos....aqui é uma parada comercial... Eu não o inseri em nenhum lugar, talvez tenha um erro, ao compilá-lo diz "se" - expressões não são permitidas em um scop global, parece significar que um erro antes if.... certo?

extern bool UseTrailing = true;
extern int lMinProfit = 30;
extern int sMinProfit = 30;
extern int lTrailingStop = 15;
extern int sTrailingStop = 15;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//-----

if (UseTrailing) TrailingPositions();  

void TrailingPositions() 
{
  int cnt = OrdersTotal();

  for (int i=0; i<cnt; i++) {
        if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
        if (OrderSymbol() != Symbol()) continue;                

        if (OrderType() == OP_BUY) {
        if (Bid-OrderOpenPrice() > lMinProfit*Point) {
                if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }

        if (OrderType() == OP_SELL) {
        if (OrderOpenPrice()-Ask > sMinProfit*Point) {
                if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point || OrderStopLoss() == 0) {
                OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point, OrderTakeProfit(), 0, Blue);
                }
        }
        }
  }
  
}