궈 팬 - 페이지 2

 
실례지만 guo의 스크립트에 대한 자세한 설명을 알 수 있습니까?

그는 무엇을합니까? 그리고 그것을 사용하는 방법?

미리 감사합니다
 

경적 06.02.05 06:45
MessageBox를 사용하여 표시기를 느리게 만드는 아이디어는 훌륭합니다. 나는 아마 결코 추측하지 않았을 것이다. 대화식 주문에 대한 많은 가능성을 열어줍니다. 존경합니다, 콤포스터!
구현을 비판하는 개인의 경우 구현이 "원시"라고 말할 때 무엇을 기준으로 하는지 완전히 명확하지 않습니다.
나는 많은 사람들이 대기 중인 주문을 하기 위해 스크립트로 작업하는 것이 매우 편리하다는 것을 알게 될 것이라고 확신합니다.


혼, 내 생각대로 말했고, 누구에게도 꾸짖지 않았다. 그러니 다음에 글을 쓸 생각이 있을 때 한번 생각해 보시기 바랍니다.
행운을 빕니다 :)
 
생명의 꽃 06.02.05 17:42

차트로 이동합니다. 부착 지점 - 시작 가격. 손절 - -50 포인트, 이익 - +50 포인트.
라인을 원하는 수준으로 이동하고( 이익 실현 은 제거할 수 있음) 확인을 클릭하면 주문이 이루어집니다.

open_line이 시장 가격보다 높으면 주문은 매수-정지 또는 매도 한도(손절매에 따라 다름)가 되고, 더 낮으면 매도 또는 매수 한도(동일 ).


스크립트는 매우 원시적이며 검사가 없으며 모든 것이 무작위입니다 =)))


열정이있을 것입니다 - 우리는 마무리 할 것입니다 :))
 
정지선과 이익을 라인 바로 뒤에서 끌 수 있습니까?
 
전문 작가로 활동하는 방법:

설명에 감사드립니다. 우리는 그것을 확실히 고려할 것이며 더 이상 주문과 관련하여 (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), "오류", MB_OK | MB_ICONERROR | MB_TOPMOST );
 
혼, 내 생각대로 말했고, 누구에게도 꾸짖지 않았다. 그러니 다음에 글을 쓸 생각이 들 때 다시 한 번 생각해 보세요.

죄송합니다, 제가 폭파했습니다.
 
정지선과 이익을 라인 바로 뒤에서 끌 수 있습니까?

그래서 재미입니다!

콤포스터에:
어렵지 않으시면 스크립트를 수정하여 각종 체크 등이 가능하도록 해주세요.
그러면 다음과 같은 세 가지 훌륭한 스크립트가 생성됩니다.

1. 보류 중인 주문을 하기 위한 것
2. 시장 매수 주문 을 위한 것
3. 시장 매도 주문용.
더 이상 충분하지 않습니다!

그리고 나서 우리는 계속해서 다른 추가 기능을 찾을 것입니다. 아마도 사람들이 힌트를 주거나 특정 작업을 수행하도록 요청할 것입니다... 그리고 누군가가 개발에 참여한다면 더 좋을 것입니다.)
 
DLL 함수에 대한 호출을 명시적으로 허용할 필요가 없도록 MessageBox 가 표준 MQL4 함수에 포함되어야 하는 것 같습니다. 예, 더 빨리 작동합니다.
 
레나투.
전문가 코드를 컴파일할 때 오류 경고
'4107' - 다른 값으로 재정의
"로그에 응용 프로그램에 대한 메시지를 표시합니다" 줄로 보냅니다.
재정의해야 할 사항은 무엇입니까?