리소스 로딩... 로딩...

bybit swap 상속 모금 전략

저자:gulishiduan_ 고주파 순서, 2020-05-07 22:20:01
태그:

//최근 친구 반응에 작은 버그가 있고, 먼저 테스트 네트워크. 파라미터는 필요에 따라 자유롭게 조정할 수 있다. 전략의 본질은 k 라인의 할인 가격을 추적하여 공백을 판단하는 것입니다. 간단히 말해서 평균 라인의 회전으로 실시간으로 신호를 감지하는 것입니다. // 새 계정을 등록하세요, 제 등록 링크를 사용하세요:https://www.bytick.com/zh-CN/register/?affiliate_id=7586&language=en&group_id=0&group_type=2//이 링크는 제3자 연계 전략을 제공합니다// // 기본 원칙: k 라인이 계속 상승하면 최대 위치까지 계속 상승합니다.//

// 만약 긴: 공백 시장에 적합하지 않지만 하락 중에도 계속 많은 지점을 늘리지 않습니다.// // 조 쇼트: 다중 시장에 적합하지 않지만 상승세를 유지하지 않습니다.

// 중점을 두십시오, 두 개의 계정을 동시에 열 수 있습니다.

// 다른 구매 전략은:weixin:ying5737 // 자체 연결 거래소 / 시뮬레이션 계정 사전 테스트. 위험 자존심에 유의하십시오.

// 일선의 차원, 또는 일선 차원, 우리는 일선을 예로 들었는데, // ma5ma10,k 라인 종료 가격이 ma5,ma10 위에 있고,ma5가 상승하고 있는 것을 탐지한다. (어젯밤의 k 라인 종료 가격>전자 5번의 k 종료 가격으로 판단하면) 매일 상장 주문을 개설하거나 직접 500u를 구매하고, 상승을 지속하고, 계속 상승한다. //가장장, 상장선에 두 개의 음선들이 나타나면, 세 번째 날 500u가장장 구매한다.

// 판매,k 라인 삼선?? 소매 1000u。(또는k 라인 네선?? 소매 2000u) // 계속 순환합니다. // 전략 실행, 13 일 (또는 21 일), 자동 중단, 평형 또는 평형 포지션 및 주문. // 최대 보유 5000u 그 지점에서 더 큰 지점만 감소합니다.

위 그림:

https://wx1.sinaimg.cn/mw1024/c5775633ly1gbsjvtrgnhj20m80dmmxy.jpg https://wx1.sinaimg.cn/mw1024/c5775633ly1gbsjvty48uj21hc0u077o.jpg https://wx2.sinaimg.cn/mw1024/c5775633ly1gbsjvu4iipj20lr0h775f.jpg

중동의 일방적인 경향 전략

모니터링 변수

  1. 빠른 MA
  2. 느린 MA
  3. 종결 가격

설정 매개 변수

  1. 한 번에 한 번에 Amount
  2. 단번에 저장량을 줄여 CloseAmount
  3. 최대 보유량 MaxPosition

더 많이

필수 조건

  1. k 라인 종료 가격은 빠른 MA와 느린 MA보다 크다
  2. 그리고 빠른 MA가 올라간다. (어젯밤의 k 라인 종료 가격이 이전 숫자 5번의 k 종료 가격보다 크다고 판단)

아래 목록

  1. 삼성양, 감축 CloseAmount
  2. 이중 음, 더함Amount. 즉, 두 개의 음이 나타난다면 2*Amount을 곱합니다.
  3. 정상 상태, Amount를 열고

제한

  1. 최대 보유액이 MaxPosition보다 크면 주문을 하지 않습니다

탈퇴

  1. N 루트 K 라인을 실행한 후 종료

공허함

필수 조건

  1. k 라인 마감 가격은 빠른 MA와 느린 MA보다 작습니다
  2. 그리고 빠른 MA가 올라간다 (어젯밤의 k 라인 종료 가격보다 작다고 판단하기 전에 N 번째 (빠른 MA 주기가) 루트 k 종료 가격)

아래 목록

  1. 삼일성, 축소 CloseAmount
  2. 두 개의 연동, 더하기 AMount. 즉 두 개의 연동이 2*Amount을 더할 수 있습니다.
  3. 정상 상태, Amount를 열고

제한

  1. 최대 보유액이 MaxPosition보다 크면 주문을 하지 않습니다

탈퇴

  1. N 루트 K 라인을 실행한 후 종료

주의사항

  1. 이 프로그램은 매번 계좌의 보유 정보를 얻을 때 전략적으로 보유량을 사용합니다.
  2. FMZ WeChat을 묶어주세요. 프로그램이 중요한 곳에 WeChat을 밀어 넣을 것입니다.

매개 변수

  1. 빠른 MA 사이클
  2. 느린 MA 사이클
  3. 수색 간격 (ms)
  4. 다중 선택
  5. 레버 크기: 0은 전체 모드입니다
  6. 계약 유형: 현재 fmex는 swap만을 지원하며 swap를 채울 수 있습니다. 재검토 시 OKEx 재검토를 사용할 수 있으며, 이_주, 이_달 등을 설정할 수 있습니다.
  7. 한 번의 감축량. 감축 조건이 달성되면 한 번의 감축량
  8. 최대 보유 ((u)
  9. API 기반 주소. http://api.fmex.com 또는 https://api.testnet.fmex.com로 설정할 수 있습니다.
  10. 정책 K가수 종료. 정책이 몇 K줄을 실행한 후에 정상적으로 종료
  11. 이 전략은 자발적으로 탈퇴할 때 청산 여부를 결정합니다.
  12. 인터랙션이 필요한지; 탈퇴 조건이 충족된 후에 정책이 정상적으로 탈퇴하는 경우; 인터랙션이 필요한 경우, 인적 개입 등의 명령을 기다립니다; 필요하지 않은 경우, 프로그램이 바로 탈퇴합니다.
  13. 주문을 먹는가;; 선택, 그러면 주문은 시장 가격 목록, 선택하지 않는 경우, 그것은 주문, 주문은 구매에 달려있다, 판매 주문은 판매에 달려있다.
  14. 연속 양 (陰) K선 수 (多做時,連續陽線) ・減仓 신호, 예를 들어,多做時,連續陽線,減仓
  15. 연속성 (陰 ((陽) K선수 (多做時,連續性) ─ 연속성 (陰 ((陽) K선수 (多做時,連續性)

상호작용

그리고 우리는是否需要交互유효합니다. 상호작용은 전략이 정상적으로 종료될 때 상호작용을 합니다.

  1. 계속한다. 계속하는 것은 같은 매개 변수를 다시 실행하는 정책 재설정입니다.
  2. 정지하라. 정지하라.
  3. 스위치 전략 시장은 시장 이후 계속됩니다. 스위치 시장은 격동 또는 추세 이후 계속 운영되며 상호 작용 1의 계속 상승의 확장입니다.


/*联系微信:ying5737(策略讨论,支持付费编写)
# 中频单边趋势策略
## 监测变量
1. 快MA
2. 慢MA
3. 收盘价
## 配置参数
1. 单次下单量Amount
2. 单次减仓量CloseAmount
3. 最大持仓量MaxPosition
## 做多
### 必要条件
1. k线收盘价大于快MA与慢MA
2. 且快MA上行(判断为昨日k线收盘价大于往前数第5根k收盘价)
### 下单
1. 三连阳,减仓CloseAmount
2. 两连阴,加仓Amount。也就是出现两连阴会下单2*Amount
3. 正常情况,开单Amount
### 限制
1. 最大持仓量大于MaxPosition则不开单
### 退出
1. 运行N根K线之后退出

## 做空
### 必要条件
1. k线收盘价小于快MA与慢MA
2. 且快MA下行(判断为昨日k线收盘价小于往前数第N(快MA5周期)根k收盘价)
### 下单
1. 三连阴,减仓CloseAmount
2. 两连阳,加仓Amount。也就是出现两连阴会下单2*Amount
3. 正常情况,开单Amount
### 限制
1. 最大持仓量大于MaxPosition则不开单
### 退出
1. 运行N根K线之后退出
## 注意事项
1. 程序会每次会获取账户的持仓信息做为策略的持仓量
2. 请绑定fmz微信,程序会重要的地方推送微信
## 参数
1. 快MA周期
2. 慢MA周期	
3. 轮询间隔(ms)	
4. 多空选择
5. 杠杆大小: 0表示全仓模式
6. 合约类型: 目前fmex只支持swap,只能填写swap。回测时可用OKEx回测,此处可设置为this_week, this_month等
7. 单次减仓量。达到减仓条件时,一次减仓量
8. 最大持仓(u)
9. API基地址。可设置为https://api.fmex.com,或测试网https://api.testnet.fmex.com
10. 策略K数退出. 策略运行多少个K线后正常退出
11. 策略主动退出时是否清仓。
12. 是否需要交互。策略在满足退出条件后,正常退出时。如果需要交互,则会等待人工干预等命令。如果不需要,则程序直接退出了
13. 是否吃单。勾选,则下单是市价单,不勾选,则是挂单,买单挂在买一,卖单挂在卖一
14. 连续阳(阴)K线数(做多时,连续阳线)。减仓信号,如做多时,连续阳线,减仓
15. 连续阴(阳)K线数(做多时,连续阴线)。连续阴(阳)K线数(做多时,连续阴线)	
16. 是否是震荡行情。勾选是震荡行情
## 交互
**交互只有在`是否需要交互`时有效**
**交互是在策略正常退出时进行交互**
1. 继续。继续是策略复位,重新运行相同的参数
2. 停止。策略停止退出
3. 切换策略行情后继续.切换行情为震荡或趋势后继续运行,是交互1'继续'的一种扩展
*/
////////////////// params ////////////////////////
//var fastMaPeriod = 5
//var slowMaPeriod = 10
//var direction = 做多|做空
//var interval = 1000
//var amount = 500
//var maxHoldAmount = 5000
//var closeAmount = 1000
//var runNBars = 13
//var marginLevel = 0
//var contractType = 'swap'
//var enableCommand = false
//var isTaker = true
//var maxOppositeDirKNum = 2
//var maxSameDirKNum = 3
//var isShock = false
////////////////// variable ////////////////////////

var makeLong = direction == 0 ? true:false
var startTime = null
var holdAmount = 0
var lastBar = null
var yinxianCnt = 0
var yangxianCnt = 0
var lastClose = 0
var last5thClose = 0
var fastMa = []
var slowMa = []
var barCnt = 0
var localIsShock = false
////////////////////////////////////////////////
var PreBarTime = 0
var isFirst = true

function PlotMA_Kline(records){
    $.PlotRecords(records, 'K')
    if(fastMa.length == 0) {
        fastMa = TA.MA(records, fastMaPeriod)
    }
    if(slowMa.length == 0) {
        slowMa = TA.MA(records, slowMaPeriod)
    }
    if(isFirst){
        $.PlotFlag(records[records.length - 1].Time, 'Start', 'STR')
        for(var i = records.length - 1; i >= 0; i--){
            if(fastMa[i] !== null){
                $.PlotLine('ma'+fastMaPeriod, fastMa[i], records[i].Time)
            }
            if(slowMa[i] !== null){
                $.PlotLine('ma'+slowMaPeriod, slowMa[i], records[i].Time)
            }
        }
        PreBarTime = records[records.length - 1].Time
        isFirst = false
    } else {
        if(PreBarTime !== records[records.length - 1].Time){
            $.PlotLine('ma'+fastMaPeriod, fastMa[fastMa.length - 2], records[fastMa.length - 2].Time)
            $.PlotLine('ma'+slowMaPeriod, slowMa[slowMa.length - 2], records[slowMa.length - 2].Time)
            PreBarTime = records[records.length - 1].Time
        }
        $.PlotLine('ma'+fastMaPeriod, fastMa[fastMa.length - 1], records[fastMa.length - 1].Time)
        $.PlotLine('ma'+slowMaPeriod, slowMa[slowMa.length - 1], records[slowMa.length - 1].Time)
}
}

function init () {
    if (fastMaPeriod > slowMaPeriod) {
        throw '快MA周期 > 慢MA周期, 请检查设置'
    }
    Log('快MA周期	    :'  + fastMaPeriod)
    Log('慢MA周期	    :' + slowMaPeriod)
    Log('轮询间隔(ms)   :' + interval)
    Log('是否是震荡策略  :' + (isShock?'是':'否'))
    Log('多空选择	    :' + (direction == 0 ? '多':'空'))
    Log('杠杆大小	    :' + (marginLevel == 0 ? '全仓':marginLevel))
    Log('连续阳(阴)K线数(做多时,连续阳线)数   :' + maxSameDirKNum)
    Log('连续阴(阳)K线数(做多时,连续阴线)   :' + maxOppositeDirKNum)
    Log('运行多少根K后退出   :' + runNBars)
    startTime = new Date()
    localIsShock = isShock
}

function onexit() {
    Log('退出')
}

function onerror() {
    Log('出错退出')
}

function openLong(ex, openAmount) {
    if (holdAmount + openAmount <= maxHoldAmount) {
        Log('已持仓: ' + holdAmount + ', 加仓:' + openAmount)
        ex.SetDirection('buy')
        if(isTaker) {
            ex.Buy(-1, openAmount, '吃单')
            holdAmount += openAmount
        } else {
            var ticker = _C(ex.GetTicker)
            if(ticker == null) {
                return false
            }
            ex.Buy(ticker.Buy, openAmount, '挂单')
        }
        return true
    } else {
        Log('持仓('+holdAmount+') 过多,不加仓')
        return false
    }
}

function closeLong(ex, closeAmount) {
    if (holdAmount >= closeAmount) {
        Log('已持仓: ' + holdAmount + ', 减仓:' + closeAmount)
        ex.SetDirection('closebuy')
        ex.Sell(-1, closeAmount)
        holdAmount -= closeAmount
        return true
    } else {
        Log('持仓('+holdAmount+') 过少,不减仓')
        return false
    }
}

function openShort(ex, openAmount) {
    if (holdAmount + openAmount <= maxHoldAmount) {
        Log('已持仓: ' + holdAmount + ', 加仓:' + openAmount)
        ex.SetDirection('sell')
        if(isTaker) {
            ex.Sell(-1, openAmount, '吃单')
            holdAmount += openAmount
        } else {
            var ticker = _C(ex.GetTicker)
            if(ticker == null) {
                return false
            }
            ex.Sell(ticker.Sell, openAmount, '挂单')
        }
        return true
    } else {
        Log('持仓('+holdAmount+') 过多,不加仓')
        return false
    }
}

function closeShort(ex, closeAmount) {
    if (holdAmount >= closeAmount) {
        Log('已持仓: ' + holdAmount + ', 减仓:' + closeAmount)
        ex.SetDirection('closesell')
        ex.Buy(-1, closeAmount)
        holdAmount -= closeAmount
        return true
    } else {
        Log('持仓('+holdAmount+') 过少,不减仓')
        return false
    }
}

function cancelOrders(ex) {
    Log('取消所有挂单')
    while(true) {
        var orders = _C(ex.GetOrders)
        if (orders.length == 0) {
            break
        }
        for(var i = 0; i < orders.length;i++) {
            ex.CancelOrder(orders[i].Id)
        }
    }
}

function updatePosition(ex) {
    var pos = ex.GetPosition()
    if(typeof(pos) === 'undefined' || pos === null || 
        pos.length == 0 || typeof(pos[0].Type) == 'undefined'  || typeof(pos[0].Amount) == 'undefined' ) {
        return
    }
    Log('仓位信息:' + (pos[0].Type == 0?'多仓,   ':'空仓,  ') + JSON.stringify(pos))
    if(pos.length>0){
        holdAmount = pos[0].Amount
        // if(pos[0].Type == 0){ //多仓
        //     ordersInfo.pos = pos[0].Amount
        // }else{
        //     ordersInfo.pos = -pos[0].Amount
        // }
    }
}

function longStrategy(ex, records) {
    var lastSecondBar = records[records.length-2]

    if ((   lastSecondBar.Close > fastMa[fastMa.length - 2] && 
            lastSecondBar.Close > slowMa[slowMa.length - 2] && 
            lastSecondBar.Close > records[records.length - 2 - fastMaPeriod].Close
        ) || localIsShock){
            var openAmount = amount
            if (lastSecondBar.Close < lastSecondBar.Open) {
                yinxianCnt += 1
                yangxianCnt = 0
            } else if (lastSecondBar.Close > lastSecondBar.Open){
                yinxianCnt = 0
                yangxianCnt += 1
            } else {
                yangxianCnt = 0
                yinxianCnt = 0
            }

            if (yinxianCnt >= maxOppositeDirKNum) {
                Log('两连阴')
                openAmount += amount
                yinxianCnt = 0
            }

            if (yangxianCnt >= maxSameDirKNum) {
                Log('三连阳')
                yangxianCnt = 0
                Log('准备减仓')
                if(closeLong(ex, closeAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'closeLong', 'CL')
                }
            } else {
                Log('准备开仓')
                if(localIsShock) {
                    openAmount -= amount
                }
                if(openLong(ex, openAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'openLong', 'OL')
                }
            }
    }
}

function shortStrategy(ex, records) {
    var lastSecondBar = records[records.length-2]

    if ((   lastSecondBar.Close < fastMa[fastMa.length - 2] && 
            lastSecondBar.Close < slowMa[slowMa.length - 2] && 
            lastSecondBar.Close < records[records.length - 2 - fastMaPeriod].Close
        ) || localIsShock){
            var openAmount = amount
            if (lastSecondBar.Close < lastSecondBar.Open) {
                yinxianCnt += 1
                yangxianCnt = 0
            } else if (lastSecondBar.Close > lastSecondBar.Open){
                yinxianCnt = 0
                yangxianCnt += 1
            } else {
                yangxianCnt = 0
                yinxianCnt = 0
            }

            if (yangxianCnt >= maxOppositeDirKNum) {
                Log('两连阳')
                yangxianCnt = 0
                openAmount += amount
            } 

            if (yinxianCnt >= maxSameDirKNum) {
                Log('三连阴')
                yinxianCnt = 0
                Log('准备减仓')
                if(closeShort(ex, closeAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'closeShort', 'CS')
                }
            } else {
                Log('准备开仓')
                if(localIsShock) {
                    openAmount -= amount
                }
                if(openShort(ex, openAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'openShort', 'OS')
                }
            }
    }
}

function onBar (ex) {
    var records = _C(ex.GetRecords)
    if (records === null || records.length < slowMaPeriod) {
        return 
    }
    if (lastBar == null) {
        lastBar = records[records.length-1]
    }
    
    if (lastBar.Time == records[records.length-1].Time) {
        return
    }
    lastBar = records[records.length-1]
    updatePosition(ex)
    PlotMA_Kline(records)
    barCnt += 1

    var lastSecondBar = records[records.length-2]
    fastMa = TA.MA(records, fastMaPeriod)
    slowMa = TA.MA(records, slowMaPeriod)
    lastClose = lastSecondBar.Close
    last5thClose = records[records.length - 2 - 5].Close

    Log('收盘价:' +lastSecondBar.Close + 
    ', 前第5个收盘价:' +records[records.length - 2 - 5].Close + 
    ', 快MA:' + _N(fastMa[fastMa.length - 2]) +
    ', 慢MA:' + _N(slowMa[slowMa.length - 2]))
    if (makeLong) {
        longStrategy(ex, records)
    } else {
        shortStrategy(ex, records)
    }
}

function runLife(ex) {
    // var pass = new Date() - startTime
    if (barCnt >= runNBars) {
        if(isCleanPosition) {
            Log('已运行'+barCnt+'K周期,结束,取消订单,清仓#ff0000@')
            cancelOrders(ex)
            updatePosition(ex)
            $.PlotFlag(lastBar.Time, 'Exit', 'EXT')
            
            if (makeLong) {
                closeLong(ex, holdAmount)
            } else {
                closeShort(ex, holdAmount)
            }    
        } else {
            Log('已运行'+barCnt+'K周期,结束,不取消订单,不清仓#ff0000@')
            updatePosition(ex)
            $.PlotFlag(lastBar.Time, 'Exit', 'EXT')
        }
        return true
    } else {
        return false
    }
}

function status() {
    var table = {
        type: 'table',
        title: '信息',
        cols: [
            '运行K数',
            '持仓量',
            '阳线',
            '阴线',
            '收盘价',
            '前第5个收盘价',
            'MA'+fastMaPeriod,
            'MA'+slowMaPeriod,
        ],
        rows: []
      }
      table.rows.push([
            barCnt,
            holdAmount,
            yangxianCnt,
            yinxianCnt,
            lastClose,
            last5thClose,
            fastMa.length == 0 ? 0 : _N(fastMa[fastMa.length - 2]),
            slowMa.length == 0 ? 0 : _N(slowMa[slowMa.length - 2])
      ])
    LogStatus(
        '现在时间:' +_D() +
        '\n启动时间:' +startTime +
        '\n`' +
        JSON.stringify(table)+
        '`\n' +
        '\n托管者版本:' +Version() +
        '\n联系Wechat:ying5737#00ff00' +
        '\nWechat: ying5737info#ff000f'
      )

}

function reset() {
    holdAmount = 0
    lastBar = null
    yinxianCnt = 0
    yangxianCnt = 0
    lastClose = 0
    last5thClose = 0
    fastMa = []
    slowMa = []
    barCnt = 0
}

function main () {
    var ex = exchanges[0]

    Log('开工   '+ex.GetName())
 //   if(ex.GetName() != 'Futures_FMex' && !IsVirtual()) {
  //      throw '仅仅支持FMex'
  //  }
    Log('基地址  ' + baseUrl)
    if(!IsVirtual()){
        ex.IO('base', baseUrl) //切换基地址,方便切换实盘和模拟盘,实盘地址:https://api.fmex.com
    }
    ex.SetTimeout(1000);
    _CDelay(500)
    ex.SetContractType(contractType)
    ex.SetMarginLevel(marginLevel)
    updatePosition(ex)
    while (true) {
        try {
            if(!IsVirtual() && runLife(ex)) {
                if((typeof(GetCommand) == 'function') && enableCommand){
                    Log('等待指令, 继续 | 停止 #ff0000@')
                    while (true) {
                        var cmd = GetCommand()
                        if (cmd) {
                            Log('收到指令: '+cmd)
                            switch(cmd) {
                                case '停止':
                                    Log('停止, 退出!#ff0000@')
                                    return
                                case '继续':
                                    reset()
                                    Log('继续, 复位,开工!#ff0000@')
                                    break
                                case '切换策略行情:0':
                                    reset()
                                    localIsShock = true
                                    Log('切换策略行情为震荡行情继续, 复位,开工!#ff0000@')
                                    break
                                case '切换策略行情:1':
                                    reset()
                                    localIsShock = false
                                    Log('切换策略行情为趋势行情继续, 复位,开工!#ff0000@')
                                    break
                            }
                            if (cmd == '停止'){
                                Log('停止, 退出!#ff0000@')
                                return
                            } else if (cmd == '继续') {
                                reset()
                                Log('继续, 复位,开工!#ff0000@')
                                break
                            }
                        }
                        updatePosition(ex)
                        status()
                        Sleep(1000)
                    }
                } else {
                    Log('停止, 退出!#ff0000@')
                    return
                }
            }
            onBar(ex)
            status()
        } catch(e) {
            Log('出错了:'+e+', 请及时处理#ff0000@')
        }
        Sleep(interval)
    }
}


더 많은

gulishiduan_ 고주파 순서웅한에 있는 에릭의 지원에 감사하고, 웅한의 양성 아이디어에 감사합니다.

gulishiduan_ 고주파 순서 沟通//或其他策略购买请咨询:weixin:ying5737

gulishiduan_ 고주파 순서이 전략의 최적화 방향은 다음과 같습니다. 1, 포지션 관리: 단일 포지션/총자금 비율로 포지션 관리가 가능하며, 특히 높은 주파수 / 이동 / 중장선 시스템에서 사용하기에 더 양적으로 적합합니다. 이러한 포지션 전략은 매우 좋습니다. 포지션 자체는 위험을 관리하는 데 도움이 될 수 있습니다. 2, 폭동 모형의 원리는, 금전 현장을 활용하여: 수익 증대. 전략, 수익이 20%에 도달한 후, 모두가 20%의 수익을 기반으로 거래 속도를 높이고, 주문량을 증가시키고, 잠재적인 수익을 증가시킵니다. 3, 자본을 재배치: 수익성이 좋은 경우 월간 재배치하는 것이 좋습니다. 시장에는 거래소 위험까지 포함 된 많은 잠재적인 위험이 있습니다. 4, 시간 선택: 로봇의 시간 선택 전략은 수동 또는 주관적 귀납 거래 전략보다 낫다. 많은 친구들이 전략을 개발할 때 시간 선택 파라미터가 없으며, 시장 흐름이나 시장 상태와 상반되는 몇 가지 전략을 사용하도록 유도하며, 이 전략을 사용하기 위해 시간을 선택하거나 / 또는 변동률을 통해 거래 여부를 고려하는 경우가 거의 없으며, 전략을 하지 않는 일시 중지 및 중지, 이것은 시각장애와 시각장애입니다. 시각장애는 기회입니다.