Konstantin Bystrov : Merhaba. kim MT4'te bir gösterge yazabilir, böylece aktif ticaret seansları (örneğin zamanı 10-18 arasında ayarlayabilirsiniz) Japon mum çubukları olarak görüntülenebilir
Burada kur gücü bilgi göstergesine göre Uzman Danışman yazabilecek ustalar var mı? Algoritma aşağıdaki gibidir. Güçlü ve zayıf bir para biriminin ortaya çıkmasını bekliyoruz. Ekran görüntüsündeki örnekte bunlar EUR ve USD'dir. Fark önemliyse (danışmanın parametrelerinde ayarlanmalıdır), o zaman pozisyona giriyoruz. Ekran görüntüsündeki örnekte, Pazartesi günü yapacağım sat yazmanız gerekiyor. Danışmanda, danışmanın sinyal alması gereken zaman çerçevesi parametresini (para birimlerinin gücündeki fark) ayarlamanız gerekir. Para birimlerinin gücündeki fark, çok sinyaldir. Durdurma kaybı gerekli değildir. Kâr almak gereklidir. Fiyat bize karşı gelirse, ortalamayız. Danışmanda, ortalama adımı, sipariş sayısını, büyüyü, ilk parti büyüklüğünü, parti artış faktörünü belirtiriz. Son zamanlarda bu yöntemle ticaret yapıyorum, çok memnunum. Benim algıma göre, bu kâse.
Konstantin Bystrov : Merhaba. kim MT4'te bir gösterge yazabilir, böylece aktif ticaret seansları (örneğin zamanı 10-18 arasında ayarlayabilirsiniz) Japon mum çubukları olarak görüntülenebilir
//+------------------------------------------------------------------+//+------------------------------------------------------------------+#property copyright""#property link""#property indicator_chart_windowexternint NumberOfDays = 50 ;
externstring AsiaBegin = "10:00" ;
externstring AsiaEnd = "18:00" ;
externcolor AsiaColor = Goldenrod;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+void init()
{
DeleteObjects();
for ( int i= 0 ; i<NumberOfDays; i++)
CreateObjects( "AS" +i, AsiaColor);
Comment ( "" );
}
//+------------------------------------------------------------------+//| Custor indicator deinitialization function |//+------------------------------------------------------------------+void deinit()
{
DeleteObjects();
Comment ( "" );
}
//+------------------------------------------------------------------+bool CreateObjects(
conststring name= "Rectangle" , // имя прямоугольникаconstcolor clr= clrRed , // цвет прямоугольникаconstlong chart_ID= 0 , // ID графикаconstint sub_window= 0 , // номер подокнаdatetime time1= 0 , // время первой точкиdouble price1= 0 , // цена первой точкиdatetime time2= 0 , // время второй точкиdouble price2= 0 , // цена второй точкиconstENUM_LINE_STYLE style= STYLE_SOLID , // стиль линий прямоугольникаconstint width= 2 , // толщина линий прямоугольникаconstbool fill= false , // заливка прямоугольника цветомconstbool back= false , // на заднем планеconstbool selection= false , // выделить для перемещенийconstbool hidden= true , // скрыт в списке объектовconstlong z_order= 0 ) // приоритет на нажатие мышью
{
//--- сбросим значение ошибкиResetLastError ();
//--- создадим прямоугольник по заданным координатамif (! ObjectCreate (chart_ID,name, OBJ_RECTANGLE ,sub_window,time1,price1,time2,price2))
{
Print ( __FUNCTION__ ,
": не удалось создать прямоугольник! Код ошибки = " , GetLastError ());
return ( false );
}
//--- установим цвет прямоугольникаObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль линий прямоугольникаObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линий прямоугольникаObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- включим (true) или отключим (false) режим заливки прямоугольникаObjectSetInteger (chart_ID,name, OBJPROP_FILL ,fill);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим выделения прямоугольника для перемещений//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнениеreturn ( true );
}
//+------------------------------------------------------------------+void DeleteObjects()
{
for ( int i= 0 ; i<NumberOfDays; i++)
ObjectDelete ( "AS" +i);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+void start()
{
datetime dt=CurTime();
for ( int i= 0 ; i<NumberOfDays; i++)
{
DrawObjects(dt, "AS" +i, AsiaBegin, AsiaEnd);
dt=decDateTradeDay(dt);
while (TimeDayOfWeek(dt)> 5 )
dt=decDateTradeDay(dt);
}
}
//+------------------------------------------------------------------+void DrawObjects( datetime dt, string no, string tb, string te)
{
datetime t1, t2;
double p1, p2;
int b1, b2;
t1=StrToTime(TimeToStr(dt, TIME_DATE )+ " " +tb);
t2=StrToTime(TimeToStr(dt, TIME_DATE )+ " " +te);
if (!TimeDayOfWeek(t1))
return ;
b1= iBarShift ( NULL , 0 , t1);
b2= iBarShift ( NULL , 0 , t2);
p1=High[Highest( NULL , 0 , MODE_HIGH , b1-b2, b2)];
p2=Low [Lowest( NULL , 0 , MODE_LOW , b1-b2, b2)];
ObjectSet(no, OBJPROP_TIME1, t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2, t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
}
//+------------------------------------------------------------------+datetime decDateTradeDay( datetime dt)
{
int ty=TimeYear(dt);
int tm=TimeMonth(dt);
int td=TimeDay(dt);
int th=TimeHour(dt);
int ti=TimeMinute(dt);
td--;
if (td== 0 )
{
tm--;
if (tm== 0 )
{
ty--;
tm= 12 ;
}
if (tm== 1 || tm== 3 || tm== 5 || tm== 7 || tm== 8 || tm== 10 || tm== 12 )
td= 31 ;
if (tm== 2 )
if ( MathMod (ty, 4 )== 0 )
td= 29 ;
else
td= 28 ;
if (tm== 4 || tm== 6 || tm== 9 || tm== 11 )
td= 30 ;
}
return (StrToTime(ty+ "." +tm+ "." +td+ " " +th+ ":" +ti));
}
//+------------------------------------------------------------------+
Merhaba sevgili programlama guruları, bu robotu bitirmek için sizden yardım istiyorum.
Ben kendim bir programcı değilim, bu robotu İnternette bulunan farklı parçalardan kendim topladım, ancak görmek istediğim kalan iki işlevi bağlayamıyorum. Bana yardım et lütfen. Sanırım senin için benim için olduğu kadar zor olmayacak. Sakıncası yoksa, bekleyen iki siparişten biri tetiklendikten sonra bekleyen bir siparişi kapatacak bir işlev ekleyin. Ve ikinci işlevin kendisi siparişin lotunu artırmalıdır ("diyelim ki", 100$'a ulaştıktan sonra 0,01 lot bakiyesinin her 50$'ı için, böylece robotun kendisi lotu 0,02 artıracaktır). Şimdiden teşekkür ederim.
externint TakeProfit = 100.0 ;
externbool AllPositions = True; // Управлять всеми позициямиexternbool ProfitTrailing = True; // Тралить только профитexternint TrailingStop = 50 ; // Фиксированный размер тралаexternint TrailingStep = 0 ; // Шаг тралаexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav" ; // Наименование звукового файлаvoid start()
{
double TakeProfitLevelB;
double TakeProfitLevelS;
double BuyStart = Ask + 400 * _Point ;
double SellStart = Bid - 400 * _Point ;
TakeProfitLevelB = BuyStart + TakeProfit* Point ;
TakeProfitLevelS = SellStart - TakeProfit* Point ;
if (Open[ 1 ]==Close[ 1 ]&& OrdersTotal ()== 0 )
{
int BuyTicket = OrderSend ( Symbol (),OP_BUYSTOP, 0.10 ,BuyStart, 3 , 0 ,TakeProfitLevelB, NULL , 0 , 0 ,Green);
int SellTicket = OrderSend ( Symbol (),OP_SELLSTOP, 0.10 ,SellStart, 3 , 0 ,TakeProfitLevelS, NULL , 0 , 0 ,Blue);
}
for ( int i= 0 ; i< OrdersTotal (); i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (AllPositions || OrderSymbol()== Symbol ()) {
TrailingPositions();
}
}
}
}
void TrailingPositions()
{
double pBid, pAsk, pp;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep- 1 )*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return ;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep- 1 )*pp || OrderStopLoss()== 0 ) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return ;
}
}
}
}
void ModifyStopLoss( double ldStopLoss)
{
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(), 0 ,CLR_NONE);
if (fm && UseSound) PlaySound (NameFileSound);
}
İsteğime gösterdiğiniz ilgi için teşekkür ederim sevgili gs. Kusura bakmayın ama ben bir programcı değilim, bu nedenle MQL4 gurusuna dönmeye karar verdim. Çalışırken gönderdiğim kod, farklı danışmanlardan topladım, daha doğrusu birinden sadece İzleyen Durdurma işlevini aldım. Gerisini kendim buldum (bekleyen siparişler vermekle ilgili). Sizden ve diğer gurulardan, gönderdiğim koda bir göz atmanızı rica ediyorum ve eğer sakıncası yoksa bu robota iki fonksiyon daha eklemek.
1) İkisinden biri tetiklendiğinde bekleyen bir siparişin silinmesi.
2) Otomatik lot artışı (her 50 $ 0,01 için, yani 100 $, 0,02 olacaktır)
iyi günler, birisi herhangi bir sayıda siparişle her sipariş için aynı hacimde zıt siparişi açacak bir danışman yazmada yardımcı olabilir. böylece ticaret yapmaz ve hiçbir şeyi kendisi kapatmaz.
yani köylerde veya koylarda fark varsa fark için her zaman bir gecikme olmalı, diyelim ki 13 puan. yardımlarınız için şimdiden teşekkürler .for mt 4
1. Herhangi bir yönde işlem açarken, aynı hacme sahip zıt bir sipariş verilir.
2. Kilidin herhangi bir parçasının açılması durumunda aradaki fark için sipariş verilmelidir.
bak bu kadar. Yeniden --- danışman hiçbir şeyi kendi başına kapatmamalıdır grafikte ekstra düğmeler olmadan. yardım paneli olmadan.
Merhaba. kim MT4'te bir gösterge yazabilir, böylece aktif ticaret seansları (örneğin zamanı 10-18 arasında ayarlayabilirsiniz) Japon mum çubukları olarak görüntülenebilir
TAMAM
Tünaydın!
Burada kur gücü bilgi göstergesine göre Uzman Danışman yazabilecek ustalar var mı? Algoritma aşağıdaki gibidir. Güçlü ve zayıf bir para biriminin ortaya çıkmasını bekliyoruz. Ekran görüntüsündeki örnekte bunlar EUR ve USD'dir. Fark önemliyse (danışmanın parametrelerinde ayarlanmalıdır), o zaman pozisyona giriyoruz. Ekran görüntüsündeki örnekte, Pazartesi günü yapacağım sat yazmanız gerekiyor. Danışmanda, danışmanın sinyal alması gereken zaman çerçevesi parametresini (para birimlerinin gücündeki fark) ayarlamanız gerekir. Para birimlerinin gücündeki fark, çok sinyaldir. Durdurma kaybı gerekli değildir. Kâr almak gereklidir. Fiyat bize karşı gelirse, ortalamayız. Danışmanda, ortalama adımı, sipariş sayısını, büyüyü, ilk parti büyüklüğünü, parti artış faktörünü belirtiriz. Son zamanlarda bu yöntemle ticaret yapıyorum, çok memnunum. Benim algıma göre, bu kâse.
Merhaba. kim MT4'te bir gösterge yazabilir, böylece aktif ticaret seansları (örneğin zamanı 10-18 arasında ayarlayabilirsiniz) Japon mum çubukları olarak görüntülenebilir
Merhaba sevgili programlama guruları, bu robotu bitirmek için sizden yardım istiyorum.
Ben kendim bir programcı değilim, bu robotu İnternette bulunan farklı parçalardan kendim topladım, ancak görmek istediğim kalan iki işlevi bağlayamıyorum. Bana yardım et lütfen. Sanırım senin için benim için olduğu kadar zor olmayacak. Sakıncası yoksa, bekleyen iki siparişten biri tetiklendikten sonra bekleyen bir siparişi kapatacak bir işlev ekleyin. Ve ikinci işlevin kendisi siparişin lotunu artırmalıdır ("diyelim ki", 100$'a ulaştıktan sonra 0,01 lot bakiyesinin her 50$'ı için, böylece robotun kendisi lotu 0,02 artıracaktır). Şimdiden teşekkür ederim.
e-News-Lucky$.mq4 veritabanına bakın.
Bkz. Sabit Orantılı Konum Boyutlandırma Yöntemi (R. Jones) - MQL4 ve MetaTrader 4 - MQL4 Algo Traders Forum - Sayfa 3 (mql5.com)
e-News-Lucky$.mq4 veritabanına bakın.
Bkz. Sabit Orantılı Konum Boyutlandırma Yöntemi (R. Jones) - MQL4 ve MetaTrader 4 - MQL4 Algo Traders Forum - Sayfa 3 (mql5.com)
Herkese merhaba, bir gösterge için fikrime bir göz atın, tüm gönderilerde spam olmaması için link atıyorum
https://www.mql5.com/en/forum/35071/page144#comment_22289427
yani köylerde veya koylarda fark varsa fark için her zaman bir gecikme olmalı, diyelim ki 13 puan. yardımlarınız için şimdiden teşekkürler .for mt 4
1. Herhangi bir yönde işlem açarken, aynı hacme sahip zıt bir sipariş verilir.
2. Kilidin herhangi bir parçasının açılması durumunda aradaki fark için sipariş verilmelidir.
bak bu kadar. Yeniden --- danışman hiçbir şeyi kendi başına kapatmamalıdır grafikte ekstra düğmeler olmadan. yardım paneli olmadan.