Fãs de GUOs - página 2

 
Desculpe, posso obter uma descrição detalhada do roteiro do guo?

o que ele faz em geral e como utilizá-lo?

obrigado de antemão
 
<br / translate="no"> Trompa 06.02.05 06:45
A idéia de usar a MessageBox para que o indicador retarde sua execução é ótima. Eu provavelmente nunca teria adivinhado. Ela abre muitas possibilidades para a colocação interativa de pedidos. Meu respeito a você komposter!
Quanto àqueles que criticam a implementação, não sei por que dizem que é "grosseira".
Tenho certeza de que será muito conveniente para muitos comerciantes trabalhar com seu roteiro para fazer pedidos pendentes.


Horn, eu disse o que eu penso e não repreendi ninguém. Portanto, por favor, pense nisso na próxima vez.
Boa sorte :)
 
Flower_of_Life 06.02.05 17:42

você transfere para o gráfico. o ponto de fixação é o preço de abertura. stop loss - 50 pontos, take profit - +50 pontos.
você move as linhas para os níveis necessários(take profit pode ser apagado), pressione ok, o pedido é feito.

Se a Openprice_line for superior ao preço de mercado - a ordem será ou Buy Stop ou Sell Limit (dependendo do Stop Loss), se for inferior - Sell Stop ou Buy Limit (o mesmo).


o script é muito grosseiro, sem cheques, tudo está ao acaso =)))


será entusiasmado - vamos melhorá-lo :)))
 
então é possível arrastar paradas e lucros por cima das linhas?
 
Como um escritor especialista deve proceder:

Obrigado pelo esclarecimento, definitivamente o levaremos em conta e não o faremos enquanto (verdadeiro) com os pedidos novamente.

Aqui está o mesmo pedido, mas modificado para vender.
(espero ter mudado tudo)

//+------------------------------------------------------------------+
//|                                                   order_sell.mq4 |
//|                              Copyright c 2004, Alexander Ivanov. |
//|                                        mailto:alexander@indus.ru |
//+------------------------------------------------------------------+
//| Разрешите импорт функций из библиотек через:                     |
//| "Сервис -> Настройки -> Советники -> Разрешить импорт DLL"       |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2004, Alexander Ivanov."
#property link      "mailto:alexander@indus.ru"

#include <WinUser32.mqh>
#include <stdlib.mqh>
#include <stderror.mqh>
//+------------------------------------------------------------------+
//| Указываем количество последних дней, на которых ищем минимум     |
//| для установки стоплосса                                          |
//+------------------------------------------------------------------+
#define DAYS_TO_CONSIDER 3
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init() { return(0); }
int deinit()
  {  
//---- просто удалим свои линии стопов
   ObjectDelete( "order_sell_Stop_Loss_Line");
   ObjectDelete( "order_sell_Take_Profit_Line");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная функция скрипта                                         |
//+------------------------------------------------------------------+
int start()
  {
   double DaysLowArray[];
   double dMyStopLoss = 0;  
   double dMyPrice = 0;
   double dMyTakeProfit = 0;
   double dMyLots = 0;
//---- скопируем массив дневных данных
   if(ArrayCopySeries(DaysLowArray, MODE_HIGH, Symbol(),PERIOD_D1) < DAYS_TO_CONSIDER) 
     {
      return(-1);
     }
//---- расчет цен
   dMyPrice      = Bid;
   dMyStopLoss   = DaysLowArray[Highest(Symbol(),PERIOD_D1,MODE_HIGH,DAYS_TO_CONSIDER,0)];
   dMyTakeProfit = dMyPrice - 2*MathMax((MathAbs(Ask-Bid)/2),MathAbs(dMyPrice-dMyStopLoss));
   dMyStopLoss  += 10*Point;
   dMyLots       = 0.1;
//---- выставим линии для визуального управления стопами
   ObjectCreate( "order_sell_Stop_Loss_Line", OBJ_HLINE, 0, 0, dMyStopLoss, 0, 0, 0, 0 );
   ObjectSet( "order_sell_Stop_Loss_Line", OBJPROP_COLOR, Red );
   ObjectSetText( "order_sell_Stop_Loss_Line", "Stop_Loss_Line", 6, "Arial", Red );

   ObjectCreate( "order_sell_Take_Profit_Line", OBJ_HLINE, 0, 0, dMyTakeProfit, 0, 0, 0, 0 );
   ObjectSet( "order_sell_Take_Profit_Line", OBJPROP_COLOR, Lime );
   ObjectSetText( "order_sell_Take_Profit_Line", "Take_Profit_Line", 6, "Arial", Lime );
//---- запросим подтверждение на отработку
   string quest="Вы хотите продать "+DoubleToStr(dMyLots,2)+" "+Symbol()+" по цене Bid "+
                DoubleToStr(dMyPrice,Digits)+"    \n\n"+
                "Переместите выставленные линии на необходимые уровни и нажмите ОК           \n"+
                "(красная линия - Stop Loss, зеленая - Take Profit)\n\n"+
                "Нажмите Отмена чтобы отказаться от сделки";
   if(MessageBoxA(0,quest,"Визуальная установка ордера на продажу",
                  MB_OKCANCEL | MB_ICONASTERISK | MB_TOPMOST)!=IDOK) return(-2);
//---- трейдер согласился, возьмем новые уровни стопов и обязательно проверим их!
   dMyStopLoss  =NormalizeDouble(ObjectGet( "order_sell_Stop_Loss_Line", OBJPROP_PRICE1),Digits);
   dMyTakeProfit=NormalizeDouble(ObjectGet( "order_sell_Take_Profit_Line",OBJPROP_PRICE1),Digits);
   
   if((dMyStopLoss>0 && dMyStopLoss<Bid) || (dMyTakeProfit>0 && dMyTakeProfit>Bid))
     {
      Print("Неправильно выставлены уровни Stop Loss и Take Profit!");
      MessageBoxA(0,"Неправильно выставлены уровни Stop Loss и Take Profit!         \n"+
                    "Операция отменена\n\n",
                    "Визуальная установка ордера на продажу",MB_OK | MB_ICONSTOP | MB_TOPMOST);
      return(-3);
     }
//---- выведем в лог сообщение об заявке
   Print("sell ",DoubleToStr(dMyLots,2)," ",Symbol()," at ",DoubleToStr(dMyPrice,Digits),
         "sl ",DoubleToStr(dMyStopLoss,Digits)," tp ",DoubleToStr(dMyTakeProfit,Digits));
//---- пробуем послать команду
   int ticket=OrderSend(Symbol(),OP_SELL,dMyLots,dMyPrice,3,dMyStopLoss,dMyTakeProfit,
                        "Ordered by \"order_sell\" script" ,255,0,HotPink);
   if(ticket>0) // все отлично - заявка прошла
     {
      //---- сразу же выведем в лог подтверждение
      Print("#",ticket," sell ",DoubleToStr(dMyLots,2)," ",Symbol()," at ",
            DoubleToStr(dMyPrice,Digits)," is done");
      //---- покажем окно 
      if(MessageBoxA(0,"Ордер успешно исполнен     \nРаспечатать его?",
		     "Визуальная установка ордера на продажу", MB_YESNO | MB_ICONASTERISK | MB_TOPMOST)==IDYES)
		  {
         OrderPrint();
        }
      //---- все ок, выходим
      return(0);
     }
//---- тут все плохо - выведем в лог сообщение
   int err=GetLastError();
   Print("sell ",DoubleToStr(dMyLots,2)," ",Symbol()," at ",
         DoubleToStr(dMyPrice,Digits)," failed [",ErrorDescription(err),"]");
//----покажем окно
   MessageBoxA(0,ErrorDescription(err), 
               "Ошибка визуальной установки ордера", MB_OK | MB_ICONERROR | MB_TOPMOST); 
   return(-4);
  }
//+------------------------------------------------------------------+
 
зы: если кто знает, как сделать месседж "поверх всех окон", скажите, плз.... а то так неудубно.....

я использовал MB_TOPMOST, попробуй, у меня вроде бы получилось.

Onde devo escrevê-lo?

Por exemplo, aqui :)
MessageBoxA(0,ErrorDescription(err), "Error", MB_OK | MB_ICONERROR | MB_TOPMOST);
 
Horn, eu disse o que pensava e não repreendi ninguém. Portanto, da próxima vez, por favor, pense em algo para escrever. <br / translate="no">

Desculpe, eu fiquei com raiva.
 
para que você possa arrastar paradas e lucros por cima das linhas?

Essa é a beleza da coisa!

à Komposter:
Se não for muito difícil, por favor, refine seu roteiro para ter todos os tipos de cheques, etc.
E então teremos três grandes roteiros:

1. um para fazer pedidos pendentes;
2. Um para ordem de compra no mercado;
3. Um para ordem de venda no mercado.
Isso não é suficiente!

E então continuaremos a procurar outras características adicionais, talvez as pessoas dêem algumas dicas ou peçam para fazer algo específico... e o que será ainda mais agradável é se alguém se juntar ao desenvolvimento ;)
 
Parece que a MessageBox deve ser introduzida nas funções MQL4 padrão, para que você não tenha que permitir explicitamente chamadas de funções DLL. E funcionará mais rapidamente.
 
Renatu.
Ao compilar o código de especialista, um aviso de erro
'4107'-redefinição com outro valor
Ele vai para a linha "logar a mensagem de solicitação".
O que precisa ser anulado?