GUO的粉丝们 - 页 2

 
对不起,我可以得到一份详细的guo书说明吗?

它一般有什么作用,如何使用它?

预先感谢
 
<br / translate="no"> 霍恩 06.02.05 06:45
为指标使用MessageBox来减慢其执行速度的想法很好。我可能永远不会猜到这一点。它为交互式订单安排提供了许多可能性。我对你的尊重,Komposter!
至于那些批评实施的人,我不知道他们为什么说它是 "粗糙的"。
我相信对许多交易者来说,使用你的脚本来下挂单会非常方便。


喇叭,我说了我的想法,我根本就没有骂人。所以下次请考虑一下。
好运 :)
 
Flower_of_Life 06.02.05 17:42

你把它转移到图表上。连接点是开盘价。止损 - 50点,获利 - +50点。
你把线移到需要的水平(获利 可以删除),按确定,订单就下了。

如果Openprice_line高于市场价格--订单将是买入止损或卖出限价(取决于止损),如果它低于--卖出止损或买入限价(相同)。


,该脚本非常粗糙,没有检查,一切都是随机的=)))


,将是热情的--我们将改进它:)
 
那么,是否可以将止损和盈利直接拖到线上?
 
专家作家应该如何进行。

谢谢你的澄清,我们一定会考虑到这一点,不再用订单做while(true)。

下面是同样的订单,但经过修改后的销售。
(我希望我已经改变了一切)

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

我应该把它写在哪里?

例如这里 :)
MessageBoxA(0,ErrorDescription(err), "Error", MB_OK |MB_ICONERROR|MB_TOPMOST)。
 
喇叭,我说了我的想法,根本没有骂人。因此,下一次,请想一想该怎么写。<br / translate="no">

我很抱歉,我生气了。
 
这样你就可以把止损和利润直接拖到线上?

这就是它的魅力所在!

到 Komposter。
如果不是太困难的话,请完善你的脚本,使之具有各种检查等功能。
然后我们会有三个伟大的剧本。

1.一个用于放置待定订单。
2.一个用于市场购买订单
3.一个用于市场卖出订单。
这还不够!

然后我们将继续寻找其他额外的功能,也许人们会给出一些提示或要求做一些具体的事情......更棒的是,如果有人加入开发;)
 
似乎MessageBox 应该被引入标准的MQL4函数中,所以你不必明确地允许DLL函数调用。而且它的工作速度会更快。
 
雷纳图。
在编译Expert代码时,一个错误警告
'4107'--用另一个值重新定义
它转到 "记录请求信息 "一行。
什么需要被覆盖?