Guo hayranları - sayfa 2

 
Affedersiniz ama guo'nun senaryosunun ayrıntılı bir açıklamasını alabilir miyim?

hatta ne yapıyor? ve nasıl kullanılır?

şimdiden teşekkürler
 

Korna 06.02.05 06:45
Göstergeyi yavaşlatmak için bir MessageBox kullanma fikri harika. Muhtemelen asla tahmin edemezdim. Etkileşimli sipariş için birçok olanak sunar. Sana saygımla, komposter!
Uygulamayı eleştirenlere gelince, uygulamanın "ham" olduğunu söylerken neye göre hareket ettikleri tam olarak belli değil.
Bekleyen siparişler vermek için birçok kişinin komut dosyanızla çalışmayı çok uygun bulacağından eminim.


Horn, ne düşündüğümü söyledim ve kimseyi azarlamadım. Bu yüzden bir dahaki sefere bir şeyler yazmayı düşündüğünüzde lütfen bunu düşünün.
İyi şanlar :)
 
Flower_of_Life 06.02.05 17:42

grafiğe aktarın. bağlantı noktası - açılış fiyatı. zararı durdur - -50 puan, kar al - +50 puan.
satırları gerekli seviyelere taşıyın ( kar al silinebilir), Tamam'a tıklayın ve bir sipariş verilir.

open_line piyasa fiyatından yüksekse, emir ya bir satın al-durdur ya da bir satış-limit olacaktır (bu, zararı durdur-durdur'a bağlıdır), daha düşükse - bir sat-durdur veya bir alış-limit (aynısı) olacaktır. ).


komut dosyası çok ham, kontrol yok, her şey rastgele =)))


coşku olacak - bitireceğiz :))
 
böylece durakları ve kârları çizgilerin hemen arkasına sürükleyebilirsin?
 
Uzman yazar olarak nasıl davranılır:

Açıklamalar için teşekkürler, kesinlikle dikkate alacağız ve artık siparişlerle (doğru) yapmayacağız.

İşte aynı sipariş ama satmak için değiştirildi.
(Umarım değişmesi gereken her şey)

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

ve nereye yazmalı?

Örneğin burada :)
MessageBoxA(0,ErrorDescription(err), "Hata", MB_OK | MB_ICONERROR | MB_TOPMOST );
 
Horn, ne düşündüğümü söyledim ve kimseyi azarlamadım. Bu yüzden bir dahaki sefere bir şeyler yazmayı düşündüğünüzde lütfen bunu düşünün.

Üzgünüm, patladım.
 
böylece durakları ve kârları çizgilerin arkasına sürükleyebilirsin?

Demek eğlence bu!

Komposter'a:
Zor değilse, lütfen komut dosyanızı değiştirin, böylece her türlü kontrol vb.
Ve sonra üç harika senaryomuz olacak:

1. bekleyen siparişler vermek için;
2. bir piyasa satın alma emri için ;
3. bir piyasa satış emri için.
Artık yeterli değil!

Ve sonra başka ek özellikler aramaya devam edeceğiz, belki insanlar bazı ipuçları verecek veya belirli bir şey yapmak isteyecekler ... ve eğer birisinin geliştirmeye katılması daha da güzel olacak;)
 
Görünüşe göre MessageBox standart MQL4 işlevlerine dahil edilmelidir, böylece DLL işlevlerine yapılan çağrılara açıkça izin vermek zorunda kalmazsınız. Evet, daha hızlı çalışacak.
 
Renata.
Uzman kodu derlenirken hata uyarısı
'4107' - başka bir değerle yeniden tanımlama
"Günlükte uygulama hakkında bir mesaj görüntüleyeceğiz" satırına gönderir
Neyin yeniden tanımlanması gerekiyor?