우리는 무료 고문을 작성합니다 - 페이지 10

 
Konstantin Bystrov :
안녕하세요. 활성 거래 세션(예: 10-18에서 시간을 설정할 수 있음)이 일본 촛대로 표시되도록 MT4 에 표시기를 작성할 수 있는 사람

확인

 

안녕하세요!

통화 강도의 정보 지표를 기반으로 전문가 고문을 작성할 수 있는 장인이 있습니까? 알고리즘은 다음과 같습니다. 우리는 강하고 약한 통화의 출현을 기다리고 있습니다. 스크린샷의 예에서 EUR와 USD입니다. 차이가 크면(어드바이저의 매개변수에서 설정해야 함) 위치를 입력합니다. 스크린샷의 예에서는 월요일에 판매를 입력해야 합니다. 어드바이저에서 어드바이저가 신호를 받아야 하는 시간 프레임 매개변수를 설정해야 합니다(통화 강도의 차이). 통화 강도의 차이는 바로 신호입니다. 손절매는 필요하지 않습니다. 이익을 취하는 것이 필요합니다. 가격이 우리에게 불리한 경우 평균입니다. 어드바이저에서 평균화 단계, 주문 수, 매직, 초기 로트 크기, 로트 증가 요인을 지정합니다. 나는 최근에 이 방법을 거래하는데 매우 만족합니다. 내 인식으로는 이것이 성배입니다.

 
Konstantin Bystrov :
안녕하세요. 활성 거래 세션(예: 10-18에서 시간을 설정할 수 있음)이 일본 촛대로 표시되도록 MT4 에 표시기를 작성할 수 있는 사람
 //+------------------------------------------------------------------+
//+------------------------------------------------------------------+
#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));
  }
//+------------------------------------------------------------------+


 

친애하는 프로그래밍 전문가 여러분, 이 로봇을 완성하는 데 도움을 요청합니다.

나 자신은 프로그래머가 아니며 인터넷에서 찾을 수 있는 다른 부품으로 이 로봇을 직접 조립했지만 보고 싶은 나머지 두 기능을 고정할 수 없습니다. 도와주세요, 제발. 나처럼 너도 힘들지 않을 것 같아. 괜찮으시다면 두 가지 보류 주문 중 하나가 실행된 후 보류 주문 을 닫는 기능을 추가하십시오. 그리고 두 번째 기능은 자체적으로 주문의 로트를 증가시켜야 합니다($100에 도달하면 잔액 0.01 로트의 모든 $50에 대해 "가정"하여 로봇 자체가 로트를 0.02만큼 올립니다). 미리 감사드립니다.

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 :


지표에 감사드립니다 . Iurii Tokman의 모든 서비스에 조언합니다.
 
제 요청에 관심을 가져주셔서 감사합니다. 모든 것을 존중하지만 저는 프로그래머가 아니기 때문에 MQL4 전문가에게 의지하기로 결정했습니다. 내가 게시 한 코드는 다른 조언자로부터 수집했으며 더 정확하게는 Trailing Stop 기능 만 가져 왔습니다. 나머지는 내가 스스로 생각해 낸 것입니다(대기 중인 주문에 관하여). 나는 당신과 다른 전문가들이 내가 게시한 코드를 살펴보고 이 로봇에 두 가지 기능을 더 추가해도 괜찮다면 부탁합니다.
1) 둘 중 하나가 트리거되면 보류 중인 주문이 삭제됩니다.
2) 자동 로트 증가($50마다 0.01, 즉 $100은 0.02)
미리 감사드립니다.

 

안녕하세요 여러분, 지표에 대한 내 아이디어를 살펴보고 모든 게시물에서 스팸하지 않도록 링크를 던집니다.

https://www.mql5.com/ru/forum/35071/page144#comment_22289427

Напишу советник бесплатно
Напишу советник бесплатно
  • 2021.05.08
  • www.mql5.com
если у вас есть хороая стратегия, и вы готовы ей поделиться,могу написать советника. приглашаю обсудить публично...
 
간단한 조언자를 쓸 수 있는 녀석들?
매수 주문과 매도 주문을 모두 하면 그 중 하나가 마감되는 즉시 같은 매수 및 매도 로트로 같은 주문이 열립니다.
 
좋은 오후입니다. 주문 개수에 관계없이 각 주문에 대해 동일한 볼륨으로 반대 주문을 여는 고문을 작성하는 데 누군가 도움을 줄 수 있습니다. 그가 거래하지 않고 아무것도 닫지 않도록.

즉, 마을이나 만에 차이가 있는 경우 항상 차이에 대한 지연이 있어야 합니다(예: 13포인트). 도움을 주셔서 미리 감사드립니다 .for mt 4

1. 어떤 방향으로 거래를 열 때 동일한 볼륨으로 반대 주문이 배치됩니다.

2. 잠금장치의 일부를 개봉할 경우 차액만큼의 주문을 하여야 한다.

그것 처럼 보인다 . 다시 ---   고문은 아무 것도 스스로 닫지 않아야 합니다.   차트에 추가 버튼 없이 도움말 패널 없이.