노인들과 함께 자바스크립트 게임을 하는 것 - 구매를 하는 파트너를 만드는 것

저자:작은 꿈, 2017-03-06 09:57:41, 업데이트: 2017-10-11 10:36:41

노인과 함께 자바스크립트 을 플레이하고 구매를 하는 파트너를 만듭니다.

앞바닥의 노인 농부의 지루한 삶

지루한 코드 세계에는 깨끗한 샘이 있을 수 있을까? 단조로운 삶에는 맑은 바람이 있을 수 있을까? 불안한 청소년은 다시 불안하게 될 수 있을까? 이것들은 프로그래머들의 공통적인 감정이어야 한다.

  • 발견

    노백은 늦은 출근의 기장농가로, 이 이전에는 엉덩이, 미래 상거래에 대한 개념이 조금 있었다. 나는 미래 상거래 시장에서 폭발한 것으로 간주 될 수 있습니다. 나는 대학에 갔을 때 C, C ++ 프로그래밍 언어를 공부하고 수업을 놓치지 않았습니다. 이것은 내 나이 젊은이를 위해 빠르게 자바스크립트를 습득하는 데 도움이되었습니다. 그것은 매우 좋은 일이었습니다. 친구들과 술을 마시며 (친구는 사설 재래 상품 오프레이터입니다.) 또한 미래 상거래에 대해 이야기했습니다.

    JS, Python, C/C++, JAVA 등이 프로그래밍 거래를 할 수 있다는 것을 한 번 검색하면 (JS만 사용하는 것이 더 많고 Python은 스스로 배우고 있습니다.) 배울 것이 정말 많습니다. 그러나 새로운 것이 있습니다.

    최근 연구한 로봇 프로그램 중 하나는 해외에서 유명한 거래 논리이자 상품 선물 시장의 아이디어로 국내 상품 시장에서 게임을 해보도록 하는 것입니다.

    img

    img

    처음 자바스크립트를 쓰기 시작했을 때 완전히 무력한 느낌, 이것은 앞쪽 JS에서 코드를 쓰는 것과 완전히 다른 느낌, 한동안 뇌는 적응하지 못했습니다. 이전에는 주식 소프트웨어의 꽃이 녹색의 선, 기둥을 보며 어떻게 계산되었는지 생각해본 적이 없습니다.

    그리고 몇 가지 참고할 만한 것들이 있습니다. 예를 들어, STOCH RSI 지표는 인터넷에 정보가 거의 없습니다.

    노인이 흰색으로 쓴 비교는 LOW입니다.

function LLV(array,period){
    if(!array || array.length - period < 0){
        throw "error:" + array;
    }
    var min = array[array.length - period];
    for(var i = array.length - period; i < array.length; i++){
        if( array[i] < min ){
            min = array[i];
        }
    }
    return min;
}

function HHV(array,period){
    if(!array || array.length - period < 0){
        throw "error:" + array;
    }
    var max = array[array.length - period];
    for(var i = array.length - period; i < array.length; i++){
        if( array[i] > max){
            max = array[i];
        }
    }
    return max;
}

function DeleteNullEle(initArr){
    var dealArr = [];
    var initArrLen = initArr.length;
    for(var i = 0,j = 0 ; i < initArrLen ; i++,j++){
        if(initArr[i] === null || isNaN(initArr[i]) ){
            j--;
            continue;
        }
        dealArr[j] = initArr[i];
    }
    return dealArr;
}

/*
LC := REF(CLOSE,1); //REF(C,1) 上一周期的收盘价
RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100;
%K:     MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100;  LLV(l,60)表示:检索60天内的最低价,可适应于检索任何股票
%D:MA(%K,P2);

LC := REF(CLOSE,1);
RSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1) *100;
STOCHRSI:MA(RSI-LLV(RSI,M),P1)/MA(HHV(RSI,M)-LLV(RSI,M),P1)*100;
*/
function FstochRSI(records,n,m,p1,p2){
    var len = records.length;
    //var LC = records[len-2];//上一周期收盘价
    //var rsi = TA.RSI(records,n);// RSI 数组   ,talib
    var rsi = talib.RSI(records,n);
    rsi = DeleteNullEle(rsi);//ceshi

    var arr1 = [];
    var arr2 = [];
    var arr3 = [];
    var arr4 = [];
    var rsi_a = [];
    var rsi_b = [];
    var k = [];
    var d = null;

    /*不包含当前柱
    for(var a = 0 ;a < rsi.length ; a++ ){//改造 不用 LLV
        for(var aa = 0 ; aa <= a; aa++ ){
            rsi_a.push(rsi[aa]);
        }
        arr1.push(rsi[a] - TA.Lowest(rsi_a,m));
    }
    for(var b = 0 ;b < rsi.length ; b++ ){//改造 不用 HHV
        for(var bb = 0 ; bb <= b; bb++ ){
            rsi_b.push(rsi[bb]);
        }
        arr2.push(TA.Highest(rsi_b,m) - TA.Lowest(rsi_b,m));
    }
    */
    for(var a = 0 ;a < rsi.length ; a++ ){//改造 不用 LLV
        if(a < m){
            continue;
        }
        for(var aa = 0 ; aa <= a; aa++ ){
            rsi_a.push(rsi[aa]);
        }
        arr1.push(rsi[a] - LLV(rsi_a,m));
    }
    for(var b = 0 ;b < rsi.length ; b++ ){//改造 不用 HHV
        if(b < m){
            continue;
        }
        for(var bb = 0 ; bb <= b; bb++ ){
            rsi_b.push(rsi[bb]);
        }
        arr2.push(HHV(rsi_b,m) - LLV(rsi_b,m));
    }

    arr1 = DeleteNullEle(arr1);
    arr2 = DeleteNullEle(arr2);
    //Log("arr1:",arr1.length,"-",arr1);//ceshi
    //Log("arr2:",arr2.length,"-",arr2);//ceshi

    arr3 = talib.MA(arr1,p1);
    arr4 = talib.MA(arr2,p1);

    arr3 = DeleteNullEle(arr3);
    arr4 = DeleteNullEle(arr4);

    //Log("ceshi");//ceshi
    var c = 0;
    var diff = 0;
    if(arr3.length !== arr4.length){//实测 长度不相等
        throw "error: !=" + arr3.length + "----" + arr4.length;
        diff = arr4.length - arr3.length; //example   diff  =   10  -   6
    }else{
        //throw "error:" + arr3.length + "----" + arr4.length;
    }

    for( ;c < arr3.length ; c++ ){
        k.push(arr3[c] / arr4[c + diff] * 100);
    }

    d = talib.MA(k,p2);

    return [k,d,rsi];
}

이 그림은 어떻게 생겼는지 보여드리겠습니다.

img

오늘 여기에 글을 올리고, 다음 번에 보자.https://www.fmz.com/bbs-topic/723

프로그래머 littleDream 원작


더 많은

작은315소!