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

 
skyjet :

답장 해주셔서 매우 감사합니다! 그러나 여전히 Ask[0],Bid[0] 이후의 미래 막대를 설명하는 방법은 무엇입니까?

이 미래 막대가 나타나자 마자 0이 됩니다. 그리고 현재 [0]인 막대는 [1]이 됩니다.


Ask 및 Bid는 배열이 아니며 현재 값이 하나만 있으며 과거 값은 모두 잊혀졌습니다.

 

계산 도와주세요
내 정산 보증금이 단말기와 정확히 일치하기 때문에
모든 주문이 완전히 잠긴 경우에만
주문 시스템에 하나의 주문을 더 추가할 가치가 있습니다 - 서약의 결과
터미널은 항상 내 결제 보증금과 매우 약간 다릅니다.
그러나 나는 총알에 총알이 있었다는 것을 결코 칠 수 없습니다!
다음은 매우 짧은 예입니다.

계정에 4개의 주문이 개설되어 있으며 각 10.00랏이 있으며 그 중 2개는 자전거입니다.
그리고 두 마을. 계정이 잔액에 있고 모든 주문이 잠겨 있음이 분명합니다.
우리는 각 주문에 대한 표준 마진을 고려하고 4로 나누고 모든 유형 상단
터미널로 정확히 노크합니다.

우리는 1.4059의 비율로 1.00 로트에 자전거를 한 대 더 넣습니다.
보증금을 고려합니다. 표준 보증금을 지불해야 함은 분명합니다.
사용 가능한 모든 주문이 잠겨 있기 때문입니다.
레버리지 1:100의 경우 새 자전거 보증금이 있습니다.

잘구매 = 140.59*1.00 = 140.59

따라서 이전 공약은이 금액만큼 증가해야합니다.
우리는 이전 보증금과 1.00 자전거 보증금을 합산합니다.

ZAL=ZAL이전 + ZAL구매 = 1407.23 + 140.59 = 1547.82

터미널에 자전거를 설치한 후 보증금은 1547.91
자전거를 9포인트 높이면 허용됩니다.
1.4068의 비율로 담보물의 실질 증가를 계산하면
BEFORE와 AFTER 여백의 차이로 표준 여백을 얻습니다.
1.4068의 비율로 1.00랏에 대해

1547.91 - 1407.23 = 140.6801

터미널 버전을 교체했습니다 - 아아, 도움이 되지 않았습니다!

-------------------------------------------------- ---

시간을 들인 점에 대해 양해를 구하지만,
지속적인 작은 불일치는 매우 성가시다.
내 컴퓨터는 다양한 시나리오를 고려하기 때문에
잔액과 이익이 계산에 사용되는 담보
구현 전 특정 작업 이후의 모든 계정 매개변수
따라서 여기서 정확도가 매우 바람직합니다.
내가 뭔가를 이해하지 못할 수도 있지만 문서를 뒤지지 않은 정도
이 불일치의 원인을 찾을 수 없습니다.
도움을 주시면 대단히 감사하겠습니다!


진심으로, MADZX
 
keep87 :


이 설정은 잊어도 됩니다. 부엌이 당신의 돈을 가져가길 원하면 재인용이 발생합니다. 그들은 격차가 무엇인지 신경 쓰지 않고 어쨌든 할 것입니다) 이것이 스스로를 "최고의 브로커 XXXXX"라고 부르는 대부분의 사기 회사에서 알고리즘 거래의 현실입니다. (XXXXXX - 이미 존재하는 대륙 또는 은하의 이름을 삽입하십시오)

변경해도 설정이 변경되지 않으며 모든 것이 동일하게 유지됩니다.


절대적으로 정확합니다! 나도 이거 봤어!
 
skyjet :
안녕하세요 ! 실제 바 +1에 대한 설명을 알려주세요. 예를 들어 실제 막대가 아닌 다음 막대의 가격이 필요합니다.

내가 알기로는 미래에서 온 기계로부터 정보를 얻으려 하고 있다.
방법을 찾으면 공유해 주시면 감사하겠습니다 :)
 
Kobalerro :
모두를 환영합니다. 프로그래밍이 처음이라 문제 해결을 부탁드립니다.

한 계정의 여러 고문이 제한된 수의 주문을 열어야 합니다.

예: 10명의 Expert Advisors, 단 5개의 주문만 열 수 있지만 통화 쌍당 1개만 열 수 있습니다.

다음과 같이 구현되어 있는데 이렇게 동작하지 않습니다.

extern int МаксКолОрдеров   = 5;

//+------------------------------------------------------------------+

int ПодсчетОткрОрдеров() {
  int k=OrdersTotal();
   if (Символ=="0") Символ=Symbol();
    for (int i=МаксКолОрдеров; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Символ || Символ=="") {
       if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
      if (OrderMagicNumber()<1) return(True);
     }
    }
   }
  }
 return;

}

//+------------------------------------------------------------------+
int start()
  {
   if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
   }


나는 다음과 같은 유사한 쇼를 구현할 것입니다:
10마리의 말이 모두 이웃 방에 있는 것처럼 각자의 일정에 따라 작업합니다.
따라서 그들 중 누구도 벽 뒤에있는 이웃이 무엇을하고 있는지 알지 못합니다. 이것이 주요 문제입니다.
당신의 벤처를 위해!
따라서 각 조언자에게 자신의 작업을 디스크 파일에 기록하도록 지시합니다.
이것은 터미널 디렉토리에 있기 때문에 모든 말에서 사용할 수 있습니다.
그들 중 누군가가 창문에 무언가를 조각하고 싶은 불타는 욕망이 있다면
먼저 이 파일을 분석하고 구현 가능성을 확인해야 합니다.
이 욕망!
쇼 스크립트와 관련하여 파일 에 주문 수 를 기록해야 합니다.
열려 있는 통화 쌍
유형 :
EURUSD 1
GBPUSD 1
EURGBP 0

여기에서 EURUSD GBPUSD 에 대한 거래를 시작하는 방법을 볼 수 있습니다.   스크립트에 따라 허용되지 않기 때문에 불가능합니다.
쌍당 하나 이상의 주문이 있습니다.
작품에 쌍이있는만큼 많은 라인이있을 것이 분명합니다.
이 결정으로 모든 말은 항상 그 순간에 무슨 일이 일어나고 있는지 알게 될 것입니다.
현재 어떤 작업이 허용되는지 여부를 계산할 수 있습니다.
쌍을 주문할 때 원하는 라인에 하나를 넣어야 합니다.
닫을 때 - 0으로 바꿉니다.
이것은 초보자에게 구현하기가 약간 어렵지만 확실히 효과가 있습니다.
그러나 모두가 거기에 있었기 때문에 가십시오. 그들은 잠시 동안 새로 온 것처럼!

즐거운 사냥 되세요!
매즈엑스

 

롤백 전략을 작성 중입니다. 해당 양초의 극한값 위(아래)에 지정하려면 중지 주문이 필요합니다. 다음은 예입니다.

종가가 시가보다 낮으면 약세 양초이고 그 반대도 마찬가지입니다. 강세 양초입니다. 나는 그들이 이전 양초가 강세라고 말하는 조건을 만드는 방법에 관심이 있습니다. 그래서 ... 우리는 이것 저것을 합니다.

논리적으로 저는 양초의 유형을 결정할 함수를 만들고 있습니다.

 int CandleType()
{
   if (Open[ 1 ] > Close[ 1 ])
     return (BullCandle);
    
   if {Open[ 1 ] < Close[ 1 ]}
     return (BearCandle);
    
   return (dodji);
}

다음으로, 인덱스 1이 있는 막대가 강세 또는 약세 ... 및 .. sth가 되도록 어떻게든 요청해야 합니다. 만들다..

그것을 하는 방법?

 
madzx :


나는 다음과 같은 유사한 쇼를 구현할 것입니다:
10마리의 말이 모두 이웃 방에 있는 것처럼 각자의 일정에 따라 작업합니다.
따라서 그들 중 누구도 벽 뒤에있는 이웃이 무엇을하고 있는지 알지 못합니다. 이것이 주요 문제입니다.
당신의 벤처를 위해!
따라서 각 조언자에게 자신의 작업을 디스크 파일에 기록하도록 지시합니다.
이것은 터미널 디렉토리에 있기 때문에 모든 말에서 사용할 수 있습니다.
그들 중 누군가가 창문에 무언가를 조각하고 싶은 불타는 욕망이 있다면
먼저 이 파일을 분석하고 구현 가능성을 확인해야 합니다.
이 욕망!
쇼 스크립트와 관련하여 파일에 주문 수를 기록해야 합니다.
열려 있는 통화 쌍
유형 :
EURUSD 1
GBPUSD 1
EURGBP 0

여기에서 EURUSD GBPUSD 에 대한 거래를 시작하는 방법을 볼 수 있습니다.   스크립트에 따라 허용되지 않기 때문에 불가능합니다.
쌍당 하나 이상의 주문이 있습니다.
작품에 쌍이있는만큼 많은 라인이있을 것이 분명합니다.
이 결정으로 모든 말은 항상 그 순간에 무슨 일이 일어나고 있는지 알게 될 것입니다.
현재 어떤 작업이 허용되는지 여부를 계산할 수 있습니다.
쌍을 주문할 때 원하는 라인에 하나를 넣어야 합니다.
닫을 때 - 0으로 바꿉니다.
이것은 초보자에게 구현하기가 약간 어렵지만 확실히 효과가 있습니다.
그러나 모두가 거기에 있었기 때문에 가십시오. 그들은 잠시 동안 새로 온 것처럼!

즐거운 사냥 되세요!
매즈엑스

조언 감사합니다만 좀 까다롭습니다. 그런 다음 귀하의 버전에서는 모든 사람이 작동하지만 진입 조건을 확인하는 데 10이 걸립니다.

그리고 5개만 열어서 가장 먼저 성공하고, 1개가 닫히면 1개가 다시 열리고, 조건을 만족하는 1개,

제한 없음 EURUSD 1 , GBPUSD 1 , EURUSD 0.

제 생각에는 더 간단한 솔루션이 있어야 합니다. 지정된 매개변수를 제한하는 조건으로 총 주문 수 를 계산하는 것과 유사합니다.

그리고 그 제한은 상징이나 마법에 의해 하나 이상입니다.

아마도 귀하의 옵션도 적합할 수 있지만 코드에서 이것을 구현하는 방법을 알 수 없습니다.

 
hoz :

여기서 이상한 점이 있습니다. 주문을 여는 기능은 다음과 같습니다.

다음은 오류입니다.

 if (SL < g_stopLevel)
    SL = g_stopLevel*pt;

정지 수준 = 5이면 정지 손실을 0.00005에 두려고 합니다.

두 번째 실수는 주문한 곳을 확인하지 않는 것입니다. 양초가 고가 근처에서 닫히거나 그 위에 있으면 오류 130이 발생합니다. 그림에서 볼 수 있듯이 서버는 즉시 매도 주문 대신 매도 주문을 열었습니다. 어떤 이유로 인해 현재 가격보다 높거나 같은 가격으로 주문하십시오.

지문을 사용하는 방법을 배웁니다. 그냥 Print()를 넣어; 올바른 위치에 필요한 변수를 대괄호로 묶고 다음과 같이 구분합니다. "," "예: Print(Price," ",SL); 그리고 "전문가" 탭에서 주문을 열 때 테스트할 때 이러한 변수가 무엇인지 확인하고 무엇이 잘못되었는지 이해할 수 있습니다.

또한 로그에는 고문이 무엇을 하려고 하는지, 어디에서 손절매를 할 것인지, 어디에서 이익을 얻을 것인지 기록됩니다. 거기에서 필요한 모든 것을 볼 수 있습니다.

논리적으로 저는 양초의 유형을 결정할 함수를 만들고 있습니다.

모든 것이 다소 간단합니다. 우리는 시작 기능 내에서 작업할 것입니다.

처음부터 우리는 마지막 촛불의 방향을 쓸 변수를 만들 것입니다.

int Candle=-1;

우리는 그것을 특정 값으로 채울 것입니다. 하나는 양초가 강세임을 나타내고 다른 하나는 약세를 나타냅니다. -1이면 없음(결정할 수 없거나 닫기=열기 방향이 없음).

나는 거래 주문 0 - 매수, 1 - 매도와 유추하여 가치를 사용할 것을 제안합니다.

더 나아가 우리는 다음과 같이 씁니다.

if(닫기[1]>열기[1]) 촛불=0; 또 다른
if(닫기[1]<열기[1] 양초=1;

이제 방향이 정의되었으며 OrderSend 함수 에서 직접 사용할 수 있습니다( string symbol, int cmd , ...other 쓰레기...).

if(Candle!=-1) OrderSend(Symbol(), 촛불 ,   ...나머지는 쓰레기야...);

또는 귀하의 비유에서 :

if(촛불==0) OpenBuy();
if(촛불==1) OpenSell();

 
Kobalerro :

조언 감사합니다만 좀 어렵네요. 그런 다음 귀하의 버전에서는 모든 사람이 작동하지만 진입 조건을 확인하는 데 10이 걸립니다.

그리고 5개만 열어서 가장 먼저 성공하고, 1개가 닫히면 1개가 다시 열리고, 조건을 만족하는 1개,

제한 없음 EURUSD 1, GBPUSD 1, EURGBP 0.

제 생각에는 더 간단한 솔루션이 있어야 합니다. 지정된 매개변수를 제한하는 조건으로 총 주문 수를 계산하는 것과 유사합니다.

그리고 그 제한은 상징이나 마법에 의해 하나 이상입니다.

아마도 귀하의 옵션도 적합할 수 있지만 코드에서 이것을 구현하는 방법을 알 수 없습니다.


또는 다음과 같을 수 있습니다.

 if (NumberOfPositions( "EURUSD" )== 0 && NumberOfPositions()< 10 )
그리고 여기 기능이 있습니다
 
keep87 :

다음은 오류입니다.

정지 수준 = 5이면 정지 손실을 0.00005에 두려고 합니다.

두 번째 실수는 주문한 곳을 확인하지 않는 것입니다. 양초가 고가 근처에서 닫히거나 그 위에 있으면 오류 130이 발생합니다. 그림에서 볼 수 있듯이 서버는 즉시 매도 주문 대신 매도 주문을 열었습니다. 어떤 이유로 인해 현재 가격보다 높거나 같은 가격으로 주문하십시오.

지문을 사용하는 방법을 배웁니다. 그냥 Print()를 넣어; 올바른 위치에 필요한 변수를 대괄호로 묶고 다음과 같이 구분합니다. "," "예: Print(Price," ",SL); 그리고 "전문가" 탭에서 주문을 열 때 테스트할 때 이러한 변수가 무엇인지 확인하고 무엇이 잘못되었는지 이해할 수 있습니다.

또한 로그에는 고문이 무엇을 하려고 하는지, 어디에서 손절매를 할 것인지, 어디에서 이익을 얻을 것인지 기록됩니다. 거기에서 필요한 모든 것을 볼 수 있습니다.

그래서 틈틈이 이용하고 있습니다. 기능은 다음과 같습니다.

 //+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
  int ticket = - 1 ;
  string myNote = "Сов баянул" ;
  
  double price = High[ 1 ] + i_thresholdFromInput*pt;
  Print ( "price = " , price);
  double SL = Low[ 1 ] - i_thresholdFromBasedSL*pt ;
  Print ( "SL = " , SL);

  if(price > Ask)
  {
    ticket = OrderSend ( Symbol (),OP_BUYSTOP, 0.1 , NormalizeDouble (price, Digits ),i_slippage, 0 , 0 ,myNote,i_myMagic, TimeCurrent () + 600 ,Navy);
  }
  
  if (ticket > 0 && OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES) == true )
    if (!OrderModify(ticket,OrderOpenPrice(), NormalizeDouble (SL, Digits ), NormalizeDouble (High[ 1 ] + i_tp*pt, Digits ), 0 ,Navy))
    return ( false );
  
  return ( true );
}
//+-------------------------------------------------------------------------------------+
//| Открытие короткой позиции                                                           |
//+-------------------------------------------------------------------------------------+
bool OpenSell()
{
  int ticket = - 1 ;
  string myNote = "Сов шортанул" ;
  
  double price = Low[ 1 ] - i_thresholdFromInput*pt;
  Print ( "price = " , price);
  double SL = High[ 1 ] + i_thresholdFromBasedSL*pt;
  Print ( "SL = " , SL);
  
  if(price < Bid)
  {
    ticket = OrderSend ( Symbol (),OP_SELLSTOP, 0.1 , NormalizeDouble (price, Digits ),i_slippage, 0 , 0 ,myNote,i_myMagic, TimeCurrent () + 600 ,Red);
  }
  
  if (ticket > 0 && OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES) == true )
    if (!OrderModify(ticket,OrderOpenPrice(), NormalizeDouble (SL, Digits ), NormalizeDouble (Low[ 1 ] - i_tp*pt, Digits ), 0 ,Red))
    return ( false );
    
  return ( true );
}

나는 잡지에서 다음과 같이 읽었습니다.

 2012.12 . 25 18 : 20 : 16     2012.02 . 13 00 : 05  5 _minites_TS_by_Philippe Nell EURUSD,M5: modify # 1 buy stop 0.10 EURUSD at 1.32103 sl: 1.32007 tp: 1.32243 ok
2012.12 . 25 18 : 20 : 16     2012.02 . 13 00 : 05  5 _minites_TS_by_Philippe Nell EURUSD,M5: open # 1 buy stop 0.10 EURUSD at 1.32103 ok
2012.12 . 25 18 : 20 : 16     2012.02 . 13 00 : 05  5 _minites_TS_by_Philippe Nell EURUSD,M5: SL = 1.3201
2012.12 . 25 18 : 20 : 16     2012.02 . 13 00 : 05  5 _minites_TS_by_Philippe Nell EURUSD,M5: price = 1.321
2012.12 . 25 18 : 20 : 14     2012.02 . 13 00 : 00  5 _minites_TS_by_Philippe Nell EURUSD,M5: OrderSend error 130
2012.12 . 25 18 : 20 : 14     2012.02 . 13 00 : 00  5 _minites_TS_by_Philippe Nell EURUSD,M5: SL = 1.3194
2012.12 . 25 18 : 20 : 14     2012.02 . 13 00 : 00  5 _minites_TS_by_Philippe Nell EURUSD,M5: price = 1.3204
2012.12 . 25 18 : 20 : 14     5 _minites_TS_by_Philippe Nell inputs: i_fastMaPeriod= 10 ; i_slowMaPeriod= 21 ; i_filtrMaPeriod= 50 ; i_trading_TF= 5 ; i_thresholdFromInput= 1 ; i_thresholdFromBasedSL= 1 ; i_slippage= 3 ; i_tp= 15 ; i_myMagic= 33330215 ; 
2012.12 . 25 18 : 20 : 12     5 _minites_TS_by_Philippe Nell EURUSD,M5: loaded successfully

처음에는 구매 가격에서 중지까지 1.3204 - 1.3194 = 0.001 포인트 의 차이가 있었습니다.

추가 1.3210 - 1.3201 = 0.009 포인트

그리고 어떤 이유로 두 번째 경우에는 정류장이 진입 가격에 더 가까웠지만 오류는 없었습니다! 생각해봤는데 안되네요.

나중에 오류를 수정했습니다. 코드에 이미 조건이 있습니다.

if(price > Ask) && if(price < Bid)는 각각 매수와 매도에 사용됩니다. 아니면 다른 옵션이 있었나요? 이제 더 이상 오류가 없습니다. 하지만 경험 많은 프로그래머의 의견을 듣고 싶습니다.

사유: