Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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 :)
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 :))
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 );
Üzgünüm, patladım.
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;)
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?