Antton86 : Lütfen yardım edin, SL ve TP'yi ve göstergenin (Stokastik) ve filtrenin (MA) parametrelerini değiştirme yeteneğine sahip bir danışmana ihtiyacımız var - SATIN AL için hızlı çizgiyi geçmek için bir sinyal, SATMAK için yavaşlar. İşlemler MA yönünde yapılmaktadır! Danışmanın karmaşık olmadığını ve çok ilginç olmadığını anlıyorum, ancak veritabanındaki tüm danışmanları inceledikten sonra benzer bir danışman bulamadım! Kendimi yazmaya çalıştım - 3 gün boş (((
tigra-max : İyi günler.Danışmandaki kodlayıcılardan ticaret yöntemlerini kaldırmaları için bir talep (zaten 5 tane var) Ayrıca, belirlediği kârı al'ı kaldırın, onlar için kârı keser! (Şimdiden teşekkürler!
Tünaydın. Şekildeki gibi bir algoritmayı programlı olarak kim yürütebilir.?? Elimle deniyorum ve işe yarıyor gibi görünüyor. Ama monitörde oturmak sıkıcı. Biraz otomatikleştirmek istiyorum. Bunlar pozisyon açıklarıdır. Başka bir program kâr için kapanacak.
Yardımınızı rica ediyorum, kendi başıma yürümedi, bir yönde bir sürü açar veya tamamen atlar. MQL'yi uzun süre çalışmanız gerekir, ancak neyin ne olduğunu anlayın. Bu nedenle, yardım için sana dönüyorum.
Burada açık görünüyor. 1.4125 fiyatında bekleyen satış stopu tetiklendi, 1.4135 fiyatına alış stopunu koyduk, lotu LotUp ile çarpıyoruz ve başka bir program her şeyi kapatana kadar böyle devam ediyoruz.
özel programcı svyasal nekotorie idei vmesto zakinul sovetnik ve gerçek zakrivat ve sdelki Drugix sovetnikov vrode bi prisvoil i svoy magik numarası gerçek. privoju kod chtobi posmotreli v chem prichna ben eshe dorobotali vzyali nailuchie svyazki indikatorov
#property copyright "Armen Alaverdyan"#property link "bravolc@mail.ru"externdouble PercentProfit = 0.15 ; // Процент профитаexterndouble PercentLoss = 100 ; // Процент убыткаexternbool DeleteOrders = False; // Удалять ордераexternbool CloseTerminal = False; // Закрывать терминалexternbool ShowComment = True; // Показывать комментарийexternint NumberAccount = 0 ; // Номер торгового счётаexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav" ; // Наименование звукового файлаexternint Slippage = 3 ; // Проскальзывание ценыexternint NumberOfTry = 5 ; // Количество попытокexternint PauseAfterError = 75 ; // Пауза после ошибки в секундахexterndouble maxsimum_Lots= 0.3 ;
externint rsi_period= 22 ;
externdouble MATrendPeriod= 26 ;
externdouble MACDOpenLevel= 3 ;
externdouble MACDCloseLevel= 2 ;
//---- input parametersexterndouble Lots= 0.1 ;
externint StLoss= 200 ;
externint TPrfit= 100 ;
externstring Times= "H1" ;
externint TrailingStop= 11 ;
externint MagicNumber = 15031963 ;
//------- Глобальные переменные советника --------------------------------------bool gbDisabled = False; // Флаг блокировки советникаcolor clCloseBuy = Blue ; // Цвет значка закрытия покупкиcolor clCloseSell = Red ; // Цвет значка закрытия продажиcolor clDelete = Yellow ; // Цвет значка удаления ордеров//------- Поключение внешних модулей -------------------------------------------#include <stdlib.mqh>#include <WinUser32.mqh>//===================================================================================================externint MaxOrders= 100 ;
externint n= 5 ; //minuta startadouble lava_aper;
double LotsOptimized() {
lava_aper = NormalizeDouble (AccountFreeMargin() * Lots / 10000.0 , 1 );
if (lava_aper < Lots) lava_aper = Lots;
if (lava_aper > maxsimum_Lots) lava_aper = Lots;{
return (lava_aper);
}
}
Print ( "Свободная маржа счета = " ,AccountFreeMargin());
Print ( "Баланс счета = " ,AccountBalance());
Print ( " Средства = " ,AccountEquity());
int Tick;
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
for ( int cnt= 0 ;cnt< OrdersTotal ();cnt++)
{
OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol()== Symbol ())
{
if (OrderType()==OP_BUY)
{
if (TrailingStop> 0 && Bid-OrderOpenPrice()> Point *TrailingStop && (OrderStopLoss()<Bid- Point *TrailingStop|| OrderStopLoss()== 0 ))
{
OrderModify(OrderTicket(),OrderOpenPrice(),
Bid- Point *TrailingStop,OrderTakeProfit(), 0 );
}
}
if (OrderType()==OP_SELL)
{
if (TrailingStop> 0 && OrderOpenPrice()-Ask> Point *TrailingStop && (OrderStopLoss()>Ask+ Point *TrailingStop || OrderStopLoss()== 0 ))
{
OrderModify(OrderTicket(),OrderOpenPrice(),
Ask+ Point *TrailingStop,OrderTakeProfit(), 0 );
}
}
}
}
Comment ( "lava_aper= " ,lava_aper,
"TrailingStop= " ,TrailingStop, "StopLoss= " ,StLoss,
"TakeProfit= " ,TPrfit,
" Средства = " ,AccountEquity(),
"AccountBalance()= " ,AccountBalance(),
"AccountFreeMargin()= " ,AccountFreeMargin() );
double bull= 0 ,bear= 0 ;
bull = iBullsPower ( NULL , 0 , 5 , PRICE_CLOSE , 1 );
bear = iBearsPower ( NULL , 0 , 5 , PRICE_CLOSE , 1 );
// Comment("bull+bear= ",bull + bear,"\n I Blue "); double SignalPrevious, MaCurrent, MaPrevious;
MaCurrent= iMA ( NULL , 0 ,MATrendPeriod, 0 , MODE_EMA , PRICE_CLOSE , 0 );
MaPrevious= iMA ( NULL , 0 ,MATrendPeriod, 0 , MODE_EMA , PRICE_CLOSE , 1 );
double MacdCurrent, MacdPrevious, SignalCurrent;
MacdCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 0 );
MacdPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_MAIN, 1 );
SignalCurrent= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 0 );
SignalPrevious= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ,MODE_SIGNAL, 1 );
double rsi17_0 = NormalizeDouble ( iRSI ( Symbol (), PERIOD_H1 , rsi_period, 0 , 0 ), Digits );
double rsi17_1 = NormalizeDouble ( iRSI ( Symbol (), PERIOD_H1 , rsi_period, 3 , 3 ), Digits );
if (Minute() == n
&& ( iDeMarker ( NULL , 0 , 14 , 2 )< 0.49 )
&&( iDeMarker ( NULL , 0 , 14 , 0 )> 0.49 )
//&& rsi17_1<rsi17_0//&& Open[1] < Close[1]
&& Tick == 0//&& (bull + bear > 0)
&& MacdCurrent< 0//&& MacdCurrent>SignalCurrent //&& MacdPrevious<SignalPrevious //&& MathAbs(MacdCurrent)>(MACDOpenLevel*Point)//&& MaCurrent>MaPrevious
)
{
OrderSend ( Symbol (),OP_BUY,LotsOptimized(),Ask, 0 ,Ask - StLoss* Point ,Ask + TPrfit* Point , "" ,MagicNumber, 0 , CLR_NONE );
Tick++;
return ( 0 );
}
if (Minute() == n
&& ( iDeMarker ( NULL , 0 , 14 , 2 )> 0.51 )
&&( iDeMarker ( NULL , 0 , 14 , 0 )< 0.51 )
//&& (bull + bear < 0) //&& rsi17_1>rsi17_0//&& Open[1] > Close[1]
&& Tick == 0
&& MacdCurrent> 0//&& MacdCurrent<SignalCurrent //&& MacdPrevious>SignalPrevious //&& MathAbs(MacdCurrent)>(MACDOpenLevel*Point)//&& MaCurrent<MaPrevious
)
{
OrderSend ( Symbol (),OP_SELL,LotsOptimized(),Bid, 0 ,Bid + StLoss* Point ,Bid - TPrfit* Point , "" ,MagicNumber, 0 , CLR_NONE );
Tick++;
return ( 0 );
}
if ( OrdersTotal () <= MaxOrders) { //1//----if (Minute() == 59 )
{
Tick = 0 ;
}
}
if (AccountEquity()>=AccountBalance()*( 1 +PercentProfit/ 100 )
|| AccountEquity()<=AccountBalance()*( 1 -PercentLoss / 100 )) {
ClosePosFirstProfit();
DeleteOrders();
}
}
//+----------------------------------------------------------------------------+//| |//| ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ |//| |//+----------------------------------------------------------------------------+//| Закрытие одной предварительно выбранной позиции |//+----------------------------------------------------------------------------+void ClosePosBySelect() {
bool fc;
color clClose;
double ll, pAsk, pBid, pp;
int err, it;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
for (it= 1 ; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) break ;
while (!IsTradeAllowed()) Sleep ( 5000 );
RefreshRates();
pAsk=MarketInfo(OrderSymbol(), MODE_ASK);
pBid=MarketInfo(OrderSymbol(), MODE_BID);
if (OrderType()==OP_BUY) {
pp=pBid; clClose=clCloseBuy;
} else {
pp=pAsk; clClose=clCloseSell;
}
ll=OrderLots();
fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
if (fc) {
if (UseSound) PlaySound (NameFileSound); break ;
} else {
err= GetLastError ();
if (err== 146 ) while (IsTradeContextBusy()) Sleep ( 1000 *PauseAfterError);
Print ( "Error(" ,err, ") Close " ,GetNameOP(OrderType()), " " ,
ErrorDescription(err), ", try " ,it);
Print (OrderTicket(), " Ask=" ,pAsk, " Bid=" ,pBid, " pp=" ,pp);
Print ( "sy=" ,OrderSymbol(), " ll=" ,ll, " sl=" ,OrderStopLoss(),
" tp=" ,OrderTakeProfit(), " mn=" ,OrderMagicNumber());
Sleep ( 1000 *PauseAfterError);
}
}
} elsePrint ( "Некорректная торговая операция. Close " ,GetNameOP(OrderType()));
}
//+----------------------------------------------------------------------------+//| Закрытие позиций по рыночной цене сначала прибыльных |//+----------------------------------------------------------------------------+void ClosePosFirstProfit() {
int i, k= OrdersTotal ();
// Сначала закрываем прибыльные позицииfor (i=k- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (OrderProfit()+OrderSwap()> 0 ) ClosePosBySelect();
}
}
}
// Потом все остальные
k= OrdersTotal ();
for (i=k- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) ClosePosBySelect();
}
}
if (CloseTerminal && !ExistPositions()) CloseTerminal();
}
//+----------------------------------------------------------------------------+//| Закрывает торговый терминал. |//+----------------------------------------------------------------------------+void CloseTerminal() {
Print ( "Сработала функция CloseTerminal()" );
int hwnd=WindowHandle( Symbol (), Period ());
int hwnd_parent= 0 ;
while (! IsStopped ()) {
// hwnd=GetParent(hwnd);if (hwnd== 0 ) break ;
hwnd_parent=hwnd;
}
if (hwnd_parent!= 0 ) PostMessageA(hwnd_parent, WM_CLOSE, 0 , 0 );
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Удаление ордеров |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders( string sy= "" , int op=- 1 , int mn=- 1 ) {
bool fd;
int err, i, it, k= OrdersTotal (), ot;
if (sy== "0" ) sy= Symbol ();
for (i=k- 1 ; i>= 0 ; i--) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot> 1 && ot< 6 ) {
if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || ot==op)) {
if (mn< 0 || OrderMagicNumber()==mn) {
for (it= 1 ; it<=NumberOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped ())) break ;
while (!IsTradeAllowed()) Sleep ( 5000 );
fd=OrderDelete(OrderTicket(), clDelete);
if (fd) {
if (UseSound) PlaySound (NameFileSound); break ;
} else {
err= GetLastError ();
Print ( "Error(" ,err, ") delete order " ,GetNameOP(ot), ": " ,ErrorDescription(err), ", try " ,it);
Sleep ( 1000 * 5 );
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Возвращает флаг существования позиций |//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
int i, k= OrdersTotal ();
if ( StringLen (sy)== 1 && StringGetChar(sy, 0 )== 48 ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy== "" ) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op< 0 || OrderType()==op) {
if (mn< 0 || OrderMagicNumber()==mn) return (True);
}
}
}
}
}
return (False);
}
//+----------------------------------------------------------------------------+//| Возвращает наименование операции |//+----------------------------------------------------------------------------+string GetNameOP( int op) {
switch (op) {
case OP_BUY : return ( "Buy" );
case OP_SELL : return ( "Sell" );
case OP_BUYLIMIT : return ( "Buy Limit" );
case OP_SELLLIMIT: return ( "Sell Limit" );
case OP_BUYSTOP : return ( "Buy Stop" );
case OP_SELLSTOP : return ( "Sell Stop" );
default : return ( "Unknown Operation" );
}
//}//+----------------------------------------------------------------------------+//| Вывод сообщения в коммент и в журнал |//+----------------------------------------------------------------------------+//void Message(string m) {// Comment(m);// if (StringLen(m)>0) Print(m);//}return ( 0 );
} //0//+------------------------------------------------------------------+//+------------------------------------------------------------------+
özel programcı svyasal nekotorie idei vmesto zakinul sovetnik ve gerçek zakrivat ve sdelki Drugix sovetnikov vrode bi prisvoil i svoy magik numarası gerçek. privoju kod chtobi posmotreli v chem prichna ben eshe dorobotali vzyali nailuchie svyazki indikatorov
özel. chtobi posmotret v chom prichina - nuzhno kod pravilno razmestit - knopka "SCR" - togda kod budet bolee strukturirovan nim budet legche rabotat
Lütfen yardım edin, SL ve TP'yi ve göstergenin (Stokastik) ve filtrenin (MA) parametrelerini değiştirme yeteneğine sahip bir danışmana ihtiyacımız var - SATIN AL için hızlı çizgiyi geçmek için bir sinyal, SATMAK için yavaşlar. İşlemler MA yönünde yapılmaktadır! Danışmanın karmaşık olmadığını ve çok ilginç olmadığını anlıyorum, ancak veritabanındaki tüm danışmanları inceledikten sonra benzer bir danışman bulamadım! Kendimi yazmaya çalıştım - 3 gün boş (((
İyi günler.Danışmandaki kodlayıcılardan ticaret yöntemlerini kaldırmaları için bir talep (zaten 5 tane var) Ayrıca, belirlediği kârı al'ı kaldırın, onlar için kârı keser! (Şimdiden teşekkürler!
Sen nesin!)
Tünaydın. Şekildeki gibi bir algoritmayı programlı olarak kim yürütebilir.?? Elimle deniyorum ve işe yarıyor gibi görünüyor. Ama monitörde oturmak sıkıcı. Biraz otomatikleştirmek istiyorum. Bunlar pozisyon açıklarıdır. Başka bir program kâr için kapanacak.
Yardımınızı rica ediyorum, kendi başıma yürümedi, bir yönde bir sürü açar veya tamamen atlar. MQL'yi uzun süre çalışmanız gerekir, ancak neyin ne olduğunu anlayın. Bu nedenle, yardım için sana dönüyorum.
Burada açık görünüyor. 1.4125 fiyatında bekleyen satış stopu tetiklendi, 1.4135 fiyatına alış stopunu koyduk, lotu LotUp ile çarpıyoruz ve başka bir program her şeyi kapatana kadar böyle devam ediyoruz.
Saygılarımla, Sergey.
Ücretsiz danışman yazarım ama tek tek ihtiyacı olana yazarım http://forum.fortrader.ru/index.php?board=3.0
özel programcı svyasal nekotorie idei vmesto zakinul sovetnik ve gerçek zakrivat ve sdelki Drugix sovetnikov vrode bi prisvoil i svoy magik numarası gerçek. privoju kod chtobi posmotreli v chem prichna ben eshe dorobotali vzyali nailuchie svyazki indikatorov
özel programcı svyasal nekotorie idei vmesto zakinul sovetnik ve gerçek zakrivat ve sdelki Drugix sovetnikov vrode bi prisvoil i svoy magik numarası gerçek. privoju kod chtobi posmotreli v chem prichna ben eshe dorobotali vzyali nailuchie svyazki indikatorov
özel. chtobi posmotret v chom prichina - nuzhno kod pravilno razmestit - knopka "SCR" - togda kod budet bolee strukturirovan nim budet legche rabotat