[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 390

 
7777877 :

안녕하세요. 질문은 다음과 같습니다. MarketInfo 함수 요청 식별자 중 1개의 매수 로트를 여는 데 필요한 여유 증거금의 양을 결정하는 MODE_MARGINREQUIRED 매개변수가 있지만 1개의 판매 로트를 여는 데 필요한 여유 증거금의 양을 결정하는 매개변수가 없는 이유는 다음과 같습니다. ? 그리고 이 경우 특정 DC에서 1로트를 판매하기 위해 필요한 무료 자금의 양을 결정하는 방법은 무엇입니까?

추신: 포럼을 어지럽히지 않기 위해 귀하의 답변에 미리 감사드립니다.

판매하는 데 약간의 돈이 필요하므로 실제로 이 매개변수를 사용할 수 있습니다.
 

전문가를 폴더에 분산시키고 모든 것을 하나의 ...\experts 폴더에 저장하지 않을 기회가 있는지 알려주지 마십시오.

그리고 그들이 이 폴더에서 작동하도록 합니다.

그리고 하나의 Expert Advisor 버전은 20개이고 다른 버전은 20개이며 전체 파일 세트를 파악하는 것은 이미 불가능합니다.

 

안녕하세요.

검색이 도움이 되지 않았습니다.

누군가 비슷한 스크립트를 보았을 수도 있습니다.

본질: 스크립트는 다음을 지정합니다: 기호, 매수/매도, 볼륨

5-7 이러한 필드가 필요합니다.

볼륨이 0이 아닌 여러 기호를 동시에 여는 경우.

감사하다.

uv와 함께.

 
안녕하세요. 질문이 있습니다. 확률론(5,14,3)에 의한 진입과 다른 기간(5,3,3)의 확률론에 의한 퇴장. 그래서 역 신호가 아닌 스토캐스틱에서 출구를 만드는 방법을 이해할 수 없습니다.
문제가 있고 해결 방법을 모르겠습니다. 설명하려고 합니다.
그래서 내가 게시 한 코드에는 2 가지 기능이 있습니다.
 //+------------------------------------------------------------------+
//| подготовить массив тикетов для закрытия |
//+------------------------------------------------------------------+
void PrepareTicketsToClose( int signal, bool Revers, int & ticketsClose[][ 2 ], double & lots[], double arrayTickets[][ 9 ])
{
int size= ArrayRange (arrayTickets, 0 );
//----
if (size== 0 ) return ;

int i,type,ticket,closeSize;
for (i= 0 ;i<size;i++)
{
type=arrayTickets[i][ 1 ];
// если тип ордера не рыночный, то пропускаем
if (type>OP_SELL) continue ;

if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}

// тут решаем для каждого открытого ордера его судьбу
// оставить в рынке или добавить в массив на закрытие
if (type==OP_BUY)
{
//
// код разрешающий оставить покупку

// как пример
if (signal==OP_BUY) continue ;
}

if (type==OP_SELL)
{
//
// код разрешающий оставить продажу

// как пример
if (signal==OP_SELL) continue ;
}

closeSize= ArrayRange (ticketsClose, 0 );
ArrayResize (ticketsClose,closeSize+ 1 );
ArrayResize (lots,closeSize+ 1 );
ticketsClose[closeSize][ 0 ] = arrayTickets[i][ 0 ]; // # тикета
ticketsClose[closeSize][ 1 ] = arrayTickets[i][ 1 ]; // тип ордера

// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][ 2 ]; // закрываемый объем
// можно закрывать частично, тогда нужно переписать строку сверху
}
//----
return ;
}

//+------------------------------------------------------------------+
//| Закрывает ордера с указанными тикетами |
//+------------------------------------------------------------------+
void CloseMarketOrders( int ticketsArray[][ 2 ], double lotsArray[])
{
//----
int i,size= ArrayRange (ticketsArray, 0 );
if (size== 0 ) return ;

int ticket,type;
double lots;
bool res;

int total= OrdersTotal ();

for (i= 0 ;i<size;i++)
{
ticket = ticketsArray[i][ 0 ];
type = ticketsArray[i][ 1 ];
lots = lotsArray[i];
RefreshRates (); // на всякий случай обновим сведения о рыночном окружении

// блок закрытия покупок
if (type==OP_BUY)
{
res = OrderClose (ticket,lots,Bid,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в покупку #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

// блок закрытия продаж
if (type==OP_SELL)
{
res = OrderClose (ticket,lots,Ask,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в продажу #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

}
//----
return ;
}
void PrepareTicketsToClose(int signal, bool Revers, int & ticketClose[][2], double & lott[],double arrayTickets[][9]) 함수에서 주문을 떠나기로 결정한 후 조건을 설정해야 합니다. 닫거나...
조건설정을 해봤는데 안되네요...
아마도 누군가가 살펴보고 이러한 기능에 오류가 있거나 내가 망쳤는지 보여줄 것입니다 ....
파일:
 
Snegovik :

안녕하세요.

검색이 도움이 되지 않았습니다.

누군가 비슷한 스크립트를 보았을 수도 있습니다.

본질: 스크립트는 다음을 지정합니다: 기호, 구매/판매, 볼륨

5-7 이러한 필드가 필요합니다.

볼륨이 0이 아닌 여러 기호를 동시에 여는 경우.

감사하다.

uv와 함께.


글쎄, 문구 - 악마는 다리를 부러 뜨릴 것입니다. 질문자가 무엇을 묻고 있는지...
 
belous :
안녕하세요. 질문이 있습니다. 확률론(5,14,3)에 의한 진입과 다른 기간(5,3,3)의 확률론에 의한 퇴장. 그래서 역 신호가 아닌 스토캐스틱에서 출구를 만드는 방법을 이해할 수 없습니다.
문제가 있고 해결 방법을 모르겠습니다. 설명하려고 합니다.
그래서 내가 게시 한 코드에는 2 가지 기능이 있습니다.
void PrepareTicketsToClose(int signal, bool Revers, int & ticketClose[][2], double & lott[],double arrayTickets[][9]) 함수에서 주문을 떠나기로 결정한 후 조건을 설정해야 합니다. 닫거나...
조건설정을 해봤는데 안되네요....
어쩌면 누군가가 현실을보고 이러한 기능에 오류가 있는지 또는 내가 망쳤는지 보여줄 것입니다 ....


유용할 수 있습니다. 나는 당신의 코드를 보지 않았습니다.
김 기능.

   //========================================================================================================================
   // Закрытие открытых позиций на продажу 
   //-------------------------------------------------------------------------------------------------------------------------
   if (ExistPositions( NULL , OP_SELL, Magic, 0 ) == true) //если открыта позиция sell
  {
     if () // условие на закритие 
    {
      ClosePosFirstProfit( NULL , OP_SELL, Magic); //закрываем позицию
    }
  } 


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.03.2008                                                     |
//|  Описание : Возвращает флаг существования позиций                          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistPositions( string sy= "" , int op=- 1 , int mn=- 1 , datetime ot= 0 ) {
   int i, k= OrdersTotal ();

   if (sy== "0" ) 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) {
               if (ot<= OrderOpenTime ()) return (True);
            }
          }
        }
      }
    }
  }
   return (False);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия  : 19.02.2008                                                      |
//|  Описание: Закрытие одной предварительно выбранной позиции                 |
//+----------------------------------------------------------------------------+
void ClosePosBySelect() {
   bool    fc;
   color   clClose;
   double ll, pa, pb, pp;
   int     dg= MarketInfo ( OrderSymbol (), MODE_DIGITS), 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 ();
      pa= MarketInfo ( OrderSymbol (), MODE_ASK);
      pb= MarketInfo ( OrderSymbol (), MODE_BID);
       if ( OrderType ()==OP_BUY) {
        pp=pb; clClose=clCloseBuy;
      } else {
        pp=pa; clClose=clCloseSell;
      }
      ll= OrderLots ();
      pp= NormalizeDouble (pp, dg);
      fc= OrderClose ( OrderTicket (), ll, pp, Slippage, clClose);
       if (fc) {
         if (UseSound) PlaySound (SoundSuccess); //break;
      } else {
        err= GetLastError ();
         if (UseSound) PlaySound (SoundError);
         if (err== 146 ) while ( IsTradeContextBusy ()) Sleep ( 1000 * 11 );
         Print ( "Error(" ,err, ") Close " ,GetNameOP( OrderType ()), " " ,
              ErrorDescription(err), ", try " ,it);
         Print ( OrderTicket (), "  Ask=" ,pa, "  Bid=" ,pb, "  pp=" ,pp);
         Print ( "sy=" , OrderSymbol (), "  ll=" ,ll, "  sl=" , OrderStopLoss (),
               "  tp=" , OrderTakeProfit (), "  mn=" , OrderMagicNumber ());
         Sleep ( 1000 * 5 );
      }
    }
  } else Print ( "Некорректная торговая операция. Close " ,GetNameOP( OrderType ()));
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене сначала прибыльных           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal ();
   if (sy== "0" ) sy= Symbol ();

   // Сначала закрываем прибыльные позиции
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber ()==mn) {
             if ( OrderProfit ()+ OrderCommission ()+ OrderSwap ()> 0 ) ClosePosBySelect();
          }
        }
      }
    }
  }
   // Потом все остальные
  k= OrdersTotal ();
   for (i=k- 1 ; i>= 0 ; i--) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy || sy== "" ) && (op< 0 || OrderType ()==op)) {
         if ( OrderType ()==OP_BUY || OrderType ()==OP_SELL) {
           if (mn< 0 || OrderMagicNumber ()==mn) ClosePosBySelect();
        }
      }
    }
  }
}
 
 
belous :
안녕하세요. 질문이 있습니다. 확률론(5,14,3)에 의한 진입과 다른 기간(5,3,3)의 확률론에 의한 퇴장. 그래서 역 신호가 아닌 스토캐스틱에서 출구를 만드는 방법을 이해할 수 없습니다.

IMHO, 마감을 위한 티켓 배열 을 만들지 않았지만 시장 주문 루프에서 각 주문을 확인하고 가능한 조건을 확인하여 마감 기능의 입력에 티켓을 제출했습니다.

 
어느 시점에서 입찰가가 0이 될 수 있습니까?
 
YOUNGA :
어느 시점에서 입찰가가 0이 될 수 있습니까?
확인이 어렵거나 너무 게으른가요? 질문하기가 더 쉽습니다. 입찰 가격이 0이 될 수 있습니까? 아무 것도 팔지 않는다면 아마도8-(
 
drknn :

글쎄, 문구 - 악마는 다리를 부러 뜨릴 것입니다. 질문자가 무엇을 묻고 있는지...


두 번째 구매 시 하나의 기호에서 동시에 판매를 여는 스크립트가 있습니다.

그리고 현재 가격에서 각 기호에 대해 표시된 볼륨인 7-10개 기호에 대해 매도/매수를 동시에 열 수 있는 스크립트에 관심이 있습니다.

예시:

EURUSD 1 판매

USD 1.5 구매

USDCAD 1.2 판매

AUDUSD 1.1 구매

NZDUSD 2 구매

USDCHF 3 구매

MultiOrders 스크립트는 거의 완벽하며 기호에 대한 필드는 5개뿐입니다. 더 추가하는 방법을 모릅니다.