Ücretsiz danışmanlar yazıyoruz - sayfa 10

 
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

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.

 
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_window

extern int     NumberOfDays = 50 ;
extern string AsiaBegin    = "10:00" ;
extern string AsiaEnd      = "18:00" ;
extern color   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(
   const string           name= "Rectangle" ,   // имя прямоугольника
   const color            clr= clrRed ,         // цвет прямоугольника
   const long             chart_ID= 0 ,         // ID графика
   const int              sub_window= 0 ,       // номер подокна
   datetime               time1= 0 ,           // время первой точки
   double                 price1= 0 ,           // цена первой точки
   datetime               time2= 0 ,           // время второй точки
   double                 price2= 0 ,           // цена второй точки
   const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линий прямоугольника
   const int              width= 2 ,           // толщина линий прямоугольника
   const bool             fill= false ,         // заливка прямоугольника цветом
   const bool             back= false ,         // на заднем плане
   const bool             selection= false ,     // выделить для перемещений
   const bool             hidden= true ,       // скрыт в списке объектов
   const long             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.

extern int     TakeProfit     = 100.0 ;
extern bool    AllPositions   = True; // Управлять всеми позициями
extern bool    ProfitTrailing = True;   // Тралить только профит
extern int     TrailingStop   = 50 ;     // Фиксированный размер трала
extern int     TrailingStep   = 0 ;     // Шаг трала
extern bool    UseSound       = False;   // Использовать звуковой сигнал
extern string 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);
}
 
Фиксированно-пропорциональный метод выбора размера позиции (Р. Джонс)
Фиксированно-пропорциональный метод выбора размера позиции (Р. Джонс)
  • 2011.07.24
  • www.mql5.com
Когда-то давно читал книгу Р. Джонса, посвященную различным стратегиям управления капиталом (Биржевая игра. Сделай миллионы, играя числами...
 
Iurii Tokman :


Gösterge için teşekkürler, herkese Iurii Tokman'ın hizmetlerini tavsiye ediyorum:
 
İ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)
Şimdiden teşekkür ederim.

 

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

Напишу советник бесплатно
Напишу советник бесплатно
  • 2021.05.08
  • www.mql5.com
если у вас есть хороая стратегия, и вы готовы ей поделиться,могу написать советника. приглашаю обсудить публично...
 
Basit bir danışman yazabilecek arkadaşlar ?
Hem alış hem de satış emirlerinin verilmesi, biri kapanır kapanmaz aynı alış ve satış lotu ile aynı emirler açılır vb.
 
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.
Neden: