Los fans de GUOs - página 2

 
Disculpe, ¿puede darme una descripción detallada de la escritura guo?

¿qué hace en general y cómo se utiliza?

gracias de antemano
 
<br / translate="no"> Cuerno 06.02.05 06:45
La idea de utilizar MessageBox para el indicador para ralentizar su ejecución es genial. Probablemente nunca lo hubiera imaginado. Abre muchas posibilidades para la realización interactiva de pedidos. ¡Mis respetos para ti komposter!
En cuanto a los que critican la aplicación, no sé por qué dicen que es "burda".
Estoy seguro de que será muy conveniente para muchos operadores trabajar con su script para colocar órdenes pendientes.


Horn, he dicho lo que pienso y no he regañado a nadie en absoluto. Así que, por favor, piénsalo la próxima vez.
Buena suerte :)
 
Flower_of_Life 06.02.05 17:42

se transfiere al gráfico. el punto de fijación es el precio de apertura. stop loss - 50 puntos, take profit - +50 puntos.
se mueven las líneas a los niveles requeridos( se puede borrar eltake profit ), se pulsa ok, se coloca la orden.

Si Openprice_line es mayor que el precio de mercado - la orden será Buy Stop o Sell Limit (dependiendo del Stop Loss), si es menor - Sell Stop o Buy Limit (lo mismo).


el script es muy crudo, no hay controles, todo es al azar =)))


será entusiasta - lo mejoraremos :))
 
¿es posible arrastrar los topes y los beneficios por encima de las líneas?
 
Cómo debe proceder un escritor experto:

Gracias por la aclaración, definitivamente lo tendremos en cuenta y no volveremos a hacer while(true) con los pedidos.

Aquí está el mismo pedido pero modificado para vender.
(Espero haber cambiado todo)

//+------------------------------------------------------------------+
//|                                                   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, попробуй, у меня вроде бы получилось.

¿Dónde debo escribirlo?

Por ejemplo aquí :)
MessageBoxA(0,ErrorDescription(err), "Error", MB_OK | MB_ICONERROR | MB_TOPMOST);
 
Horn, dije lo que pensaba y no regañé a nadie en absoluto. Así que la próxima vez, por favor, piensa en algo para escribir. <br / translate="no">

Lo siento, me he enfadado.
 
¿para poder arrastrar los topes y los beneficios sobre las líneas?

Eso es lo bonito.

a Komposter:
Si no es muy difícil, por favor, perfecciona tu guión para tener todo tipo de comprobaciones, etc.
Y entonces tendremos tres grandes guiones:

1. Uno para colocar los pedidos pendientes;
2. uno para la orden de compra de mercado;
3. uno para la orden de venta a mercado.
¡No es suficiente!

Y luego seguiremos buscando otras características adicionales, tal vez la gente dé algunas pistas o pida hacer algo específico... y lo que será aún más bonito es que alguien se una al desarrollo ;)
 
Parece que MessageBox debería introducirse en las funciones estándar de MQL4, para no tener que permitir explícitamente las llamadas a funciones DLL. Y funcionará más rápido.
 
Renatu.
Al compilar el código experto, una advertencia de error
'4107'-redefinición con otro valor
Va a la línea "registrar el mensaje de solicitud".
¿Qué hay que anular?
Razón de la queja: