[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 795

 
obla4ko :
고문을 곤봉에 비교할 수는 없습니다. 이것은 미묘한 일입니다. :))), 가상, 저는 말할 것입니다. 그리고 당연히 역사의 위조에 반응해야 합니다. 그가 지우기에 반응하지 않았다면 그가 실제 생활에서 얼마나 느려질지 상상할 수 있습니다. - 연간 10,000당 100달러 - 기껏해야 ... 글쎄, 은행에 돈을 보관하는 것이 더 쉽습니다 - 그들은 3-6을 줍니다 거기에 퍼센트! :))

))) 끝났습니다, 더 쉽습니다! 누가 주장... // 그리고 누가 그것이 쉬울 것이라고 말했는가? )))

또는 증권 거래소에 가십시오. 기본적으로 그런 것은 없습니다. 그래서 ... 모든 사람 앞에서 - 검열이라고 부르는 방법 - 흠 ... 핸디캡에서도 이상한 일을 할 수 있습니다.

가장 좋은 방법은 물론 실제 테스트입니다. 고문에 명시된 원칙이 정확하다면(그리고 이것은 테스터에서 확실히 확인할 수 있음), 불가항력 조치를 실제에 설정함으로써 거래는 ++로 이루어집니다. 테스터와 같이 +++++++에는 없지만 여전히...)))

그건 그렇고, 클리핑 갭, ktr. 지표는 당신을 미치게 만듭니다. 견적 스트림에서 많은 도움이 됩니다. 내 코드에서 볼 수 있습니다 - 킬 갭.

 

Techno :
obla4ko, создайте переменную типа datetime x, и пусть это будет время открытие бара, на котором произошел стоплосс. А в условии открытия поставте, что (Time[0]!=x). При этом x должно обновляться при новом сработавшем стоплосе. Это первый вариант. И второй как я уже в третий раз пишу, после срабатывания стопа включить ожидание 1 бар, это будет совершенно тоже самое, не логично разве?

지난번 포스트에서 저는 포지션을 여는 역할을 하는 코드의 일부를 게시했습니다. "한 번 보는 것이 ....보다 낫다"고 말했듯이 여기에 말한 내용을 쓸 수 있습니까? :)
 

여보세요!!!

이 스레드의 71페이지에서 granit77이 매우 흥미로운 기사를 작성했습니다!

Извините, что встреваю, поделюсь ламерским способом удобной записи множества условий. При наладке легко добавлять/убирать, не заботясь о скобках, и все наглядно. 
if (true
    && StochK_0 < StochD_1
    && StochD_1 > 80 
    && cci_0 < cci_1    
    && cci_0 > 100 
    //&& .... а это я пока убрал     
   )

여기에 샘플이 있으며 무언가를 시도했습니다.

 if (((Sto_0>Sto_1&&Sto_0< 20 )&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N)))
// это основа
if ( true
      &&Sto_0>Sto_1&&Sto_0< 20
      &&OsMA_0>OsMA_1&&OsMA_0<-P
      &&Macd_0>Macd_1&&Macd_0<-N
      ) //а это то что получилось

너무 이상해서 여쭤봅니다...

 

이것이 작동하는 이유와 변수 값을 10% 올바르게 증가시키는 것을 고려하는 이유는 다음과 같습니다.

TStartS = MathRound (TStartS+TStartS* 0.1 );

... 그러나 이것은 증가하지 않습니다:

TStartS = MathRound (TStartS+TStartS/ 100 *PercentTakePr); // где PercentTakePr - внешняя переменная, равна 10, 20, 30, и т.д. ...
차이점은 무엇입니까 - kill - 이해할 수 없습니다 ...
 
artmedia70 :

이것이 작동하는 이유와 변수 값을 10%만큼 올바르게 증가시키는 것을 고려하는 이유는 다음과 같습니다.

... 그러나 이것은 증가하지 않습니다:

차이점은 무엇입니까 - kill - 이해할 수 없습니다 ...





어쩌면 그렇게

TStartS = MathRound (TStartS+(TStartS/ 100 *PercentTakePr)); 
 

뭐가 문제 야? 내용을 변경하지 않고 문자열을 하위 문자열로 나누기만 하면 됩니다. 모든 것이 동일하게 작동하지만 읽고 편집하는 것이 더 쉽습니다. 불필요한 줄은 주석 처리하면 됩니다.

그러다가 프로들이 오랫동안 이런 식으로 글을 써왔다는 것이 밝혀졌고, 그들은 심지어 더 나은 포맷을 했기 때문에 제가 휠을 발명했습니다. :))

if (true              &&
    StochK_0 < StochD_1 && 
    StochD_1 > 80     &&  
    && cci_0 < cci_1  &&   
    && cci_0 > 100 
   )

//((Sto_0>Sto_1&&Sto_0< 20 )&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N))
// Ваш вариант вот так будет выглядеть наиболее прозрачно, на мой взгляд
if (true                         &&
    (Sto_0 >Sto_1  && Sto_0 < 20 ) &&
    (OsMA_0>OsMA_1 && OsMA_0<-P) &&
    (Macd_0>Macd_1 && Macd_0<-N)  
   ) 
 
artmedia70 :

이것이 작동하는 이유와 변수 값을 10% 올바르게 증가시키는 것을 고려하는 이유는 다음과 같습니다.

... 그러나 이것은 증가하지 않습니다:

차이점은 무엇입니까 - kill - 이해할 수 없습니다 ...





0.1은 double이고 100은 int입니다.

유형 캐스팅 에 대한 자습서를 참조하십시오.

 
Svinozavr :

0.1은 double이고 100은 int입니다.

유형 캐스팅에 대한 자습서를 참조하십시오.

그래서 나는 거기에 모든 변수를 가지고 있습니다. int ... 그것은 ... 아 ... 도대체 ... 계속해서 선택했습니다 ...

이것이 작동하는 것입니다:

LastTakeProfitS = MathRound (LastTakeProfitS+LastTakeProfitS/ 100 *PercentTakePr);
... 그리고 여기에 같은 유형의 어리석게 다른 변수를 붙이면 더 이상 작동하지 않습니다. 아침에, 그것은 내 마음을 완전히 날려 버렸습니다 ...
 
obla4ko :

지난번 포스트에서 저는 포지션을 여는 역할을 하는 코드의 일부를 게시했습니다. "한 번 보는 것이 ....보다 낫다"고 말했듯이 여기에 말한 내용을 쓸 수 있습니까? :)

여기 회로도가 있습니다. 확인하지 않았지만 작동해야 합니다. 누락된 부분은 원본 코드에서 추가하는 것이 지루합니다. 빨간색은 숫자를 나타내며 변경하면 기대치가 증가하고 숫자 2는 하나의 촛불을 기다리고 있음을 의미합니다. 2개의 초가 필요하면 기다리십시오, 3개를 넣으십시오 등.

 bool work=1; int tick; datetime t;
int start()
{
   if (!work){ if (t!=iTime( NULL , 0 , 1 )){t=iTime( NULL , 0 , 1 );tick++;}}
   if (tick== 2 ){work= 1 ;tick= 0 ;} 
   
   time();
   if ( OrdersTotal ()== 0 )CheckForOpen();
   //-- code
}
//----
void CheckForOpen()
{
   double ma;
   int     res;
    
   ma= iMA ( NULL , 0 ,MovingPeriod,MovingShift, MODE_SMA , PRICE_CLOSE , 0 );

   if (work && Open[ 1 ]>ma && Close[ 1 ]<ma)  
     {
      res= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 30 ,Bid+Stoploss* Point ,Bid-Takeprofit* Point , "" ,MAGICMA, 0 , Red );
       return ;
     }

   if (work && Open[ 1 ]<ma && Close[ 1 ]>ma)  
     {
      res= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 30 ,Ask-Stoploss* Point ,Ask+Takeprofit* Point , "" ,MAGICMA, 0 , Blue );
       return ;
     }

}
//----
void time()
{
static datetime time;
    
   if (OrdersHistoryTotal()== 0 ) return ;
   for ( int i= 0 ;i<OrdersHistoryTotal();i++)
       {
       OrderSelect (i,SELECT_BY_POS,MODE_HISTORY);
         if (OrderCloseTime()>time && OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA)
            {
            time=OrderCloseTime();
             if (OrderProfit()< 0 )work= 0 ;
            }
       }    
   
}
 
artmedia70 :

그래서 나는 거기에 모든 변수를 가지고 있습니다. int ... 그것은 ... 아 ... 도대체 ... 계속해서 선택했습니다 ...

이것이 작동하는 것입니다:

... 그리고 여기에 같은 유형의 어리석게 다른 변수를 붙이면 더 이상 작동하지 않습니다. 아침에, 그것은 내 마음을 완전히 날려 버렸습니다 ...


그게 다야 ... 내가 직접 찾았습니다 ... 100 대신 ... 어리석게도 100.0 ... 나는 nafig를 죽일 것입니다 ...